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

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

Issue 1486103002: Nuke webrtc/common_video/plane.*. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years 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
« no previous file with comments | « webrtc/common_video/plane.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2012 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 #include "webrtc/common_video/plane.h"
12
13 #include <string.h> // memcpy
14
15 #include <algorithm> // swap
16
17 namespace webrtc {
18
19 // Aligning pointer to 64 bytes for improved performance, e.g. use SIMD.
20 static const int kBufferAlignment = 64;
21
22 Plane::Plane()
23 : allocated_size_(0),
24 plane_size_(0),
25 stride_(0) {}
26
27 Plane::~Plane() {}
28
29 int Plane::CreateEmptyPlane(int allocated_size, int stride, int plane_size) {
30 if (allocated_size < 1 || stride < 1 || plane_size < 1)
31 return -1;
32 stride_ = stride;
33 if (MaybeResize(allocated_size) < 0)
34 return -1;
35 plane_size_ = plane_size;
36 return 0;
37 }
38
39 int Plane::MaybeResize(int new_size) {
40 if (new_size <= 0)
41 return -1;
42 if (new_size <= allocated_size_)
43 return 0;
44 rtc::scoped_ptr<uint8_t, AlignedFreeDeleter> new_buffer(
45 static_cast<uint8_t*>(AlignedMalloc(new_size, kBufferAlignment)));
46 if (buffer_.get()) {
47 memcpy(new_buffer.get(), buffer_.get(), plane_size_);
48 }
49 buffer_.reset(new_buffer.release());
50 allocated_size_ = new_size;
51 return 0;
52 }
53
54 int Plane::Copy(const Plane& plane) {
55 if (MaybeResize(plane.allocated_size_) < 0)
56 return -1;
57 if (plane.buffer_.get())
58 memcpy(buffer_.get(), plane.buffer_.get(), plane.plane_size_);
59 stride_ = plane.stride_;
60 plane_size_ = plane.plane_size_;
61 return 0;
62 }
63
64 int Plane::Copy(int size, int stride, const uint8_t* buffer) {
65 if (MaybeResize(size) < 0)
66 return -1;
67 memcpy(buffer_.get(), buffer, size);
68 plane_size_ = size;
69 stride_ = stride;
70 return 0;
71 }
72
73 void Plane::Swap(Plane& plane) {
74 std::swap(stride_, plane.stride_);
75 std::swap(allocated_size_, plane.allocated_size_);
76 std::swap(plane_size_, plane.plane_size_);
77 buffer_.swap(plane.buffer_);
78 }
79
80 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/common_video/plane.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698