Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(622)

Side by Side Diff: webrtc/common_video/video_frame_buffer.cc

Issue 1645543003: H264: Improve FFmpeg decoder performance by using I420BufferPool. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added comments about why we zero-initialize Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 return nullptr; 74 return nullptr;
75 } 75 }
76 } 76 }
77 77
78 uint8_t* I420Buffer::MutableData(PlaneType type) { 78 uint8_t* I420Buffer::MutableData(PlaneType type) {
79 RTC_DCHECK(HasOneRef()); 79 RTC_DCHECK(HasOneRef());
80 return const_cast<uint8_t*>( 80 return const_cast<uint8_t*>(
81 static_cast<const VideoFrameBuffer*>(this)->data(type)); 81 static_cast<const VideoFrameBuffer*>(this)->data(type));
82 } 82 }
83 83
84 size_t I420Buffer::DataSize() const {
85 return stride_y_ * height_ + (stride_u_ + stride_v_) * ((height_ + 1) / 2);
stefan-webrtc 2016/02/01 14:02:09 Shouldn't this be the fully allocated size if you
hbos 2016/02/02 16:13:03 This is the size used fir AlignedMalloc and for me
86 }
87
84 int I420Buffer::stride(PlaneType type) const { 88 int I420Buffer::stride(PlaneType type) const {
85 switch (type) { 89 switch (type) {
86 case kYPlane: 90 case kYPlane:
87 return stride_y_; 91 return stride_y_;
88 case kUPlane: 92 case kUPlane:
89 return stride_u_; 93 return stride_u_;
90 case kVPlane: 94 case kVPlane:
91 return stride_v_; 95 return stride_v_;
92 default: 96 default:
93 RTC_NOTREACHED(); 97 RTC_NOTREACHED();
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 buffer->stride(kVPlane) * uv_offset_y + uv_offset_x; 233 buffer->stride(kVPlane) * uv_offset_y + uv_offset_x;
230 return new rtc::RefCountedObject<WrappedI420Buffer>( 234 return new rtc::RefCountedObject<WrappedI420Buffer>(
231 cropped_width, cropped_height, 235 cropped_width, cropped_height,
232 y_plane, buffer->stride(kYPlane), 236 y_plane, buffer->stride(kYPlane),
233 u_plane, buffer->stride(kUPlane), 237 u_plane, buffer->stride(kUPlane),
234 v_plane, buffer->stride(kVPlane), 238 v_plane, buffer->stride(kVPlane),
235 rtc::KeepRefUntilDone(buffer)); 239 rtc::KeepRefUntilDone(buffer));
236 } 240 }
237 241
238 } // namespace webrtc 242 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698