| Index: webrtc/common_video/video_frame.cc
|
| diff --git a/webrtc/common_video/video_frame.cc b/webrtc/common_video/video_frame.cc
|
| index a30f658ea0eae9d246e952a87ff4fc3b73b36a23..28e463112c87434690e3ded3c45069be834def6c 100644
|
| --- a/webrtc/common_video/video_frame.cc
|
| +++ b/webrtc/common_video/video_frame.cc
|
| @@ -113,22 +113,12 @@ void VideoFrame::CreateFrame(const uint8_t* buffer,
|
| }
|
|
|
| void VideoFrame::CopyFrame(const VideoFrame& videoFrame) {
|
| - if (videoFrame.IsZeroSize()) {
|
| - video_frame_buffer_ = nullptr;
|
| - } else if (videoFrame.native_handle()) {
|
| - video_frame_buffer_ = videoFrame.video_frame_buffer();
|
| - } else {
|
| - CreateFrame(videoFrame.buffer(kYPlane), videoFrame.buffer(kUPlane),
|
| - videoFrame.buffer(kVPlane), videoFrame.width(),
|
| - videoFrame.height(), videoFrame.stride(kYPlane),
|
| - videoFrame.stride(kUPlane), videoFrame.stride(kVPlane),
|
| - kVideoRotation_0);
|
| - }
|
| + ShallowCopy(videoFrame);
|
|
|
| - timestamp_ = videoFrame.timestamp_;
|
| - ntp_time_ms_ = videoFrame.ntp_time_ms_;
|
| - render_time_ms_ = videoFrame.render_time_ms_;
|
| - rotation_ = videoFrame.rotation_;
|
| + // If backed by a plain memory buffer, create a new, non-shared, copy.
|
| + if (video_frame_buffer_ && !video_frame_buffer_->native_handle()) {
|
| + video_frame_buffer_ = I420Buffer::Copy(video_frame_buffer_);
|
| + }
|
| }
|
|
|
| void VideoFrame::ShallowCopy(const VideoFrame& videoFrame) {
|
| @@ -177,10 +167,6 @@ bool VideoFrame::IsZeroSize() const {
|
| return !video_frame_buffer_;
|
| }
|
|
|
| -void* VideoFrame::native_handle() const {
|
| - return video_frame_buffer_ ? video_frame_buffer_->native_handle() : nullptr;
|
| -}
|
| -
|
| rtc::scoped_refptr<VideoFrameBuffer> VideoFrame::video_frame_buffer() const {
|
| return video_frame_buffer_;
|
| }
|
| @@ -191,7 +177,7 @@ void VideoFrame::set_video_frame_buffer(
|
| }
|
|
|
| VideoFrame VideoFrame::ConvertNativeToI420Frame() const {
|
| - RTC_DCHECK(native_handle());
|
| + RTC_DCHECK(video_frame_buffer_->native_handle());
|
| VideoFrame frame;
|
| frame.ShallowCopy(*this);
|
| frame.set_video_frame_buffer(video_frame_buffer_->NativeToI420Buffer());
|
|
|