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

Side by Side Diff: media/base/decoder_buffer.cc

Issue 11642054: Use scoped_ptr<> and deleter for media::DecoderBuffer::data_. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolve comments Created 7 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « media/base/decoder_buffer.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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/decoder_buffer.h" 5 #include "media/base/decoder_buffer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "media/base/decrypt_config.h" 8 #include "media/base/decrypt_config.h"
9 9
10 #if !defined(OS_ANDROID)
11 #include "base/memory/aligned_memory.h"
12 #endif
13
14 namespace media { 10 namespace media {
15 11
16 DecoderBuffer::DecoderBuffer(int buffer_size) 12 DecoderBuffer::DecoderBuffer(int buffer_size)
17 : Buffer(base::TimeDelta(), base::TimeDelta()), 13 : Buffer(base::TimeDelta(), base::TimeDelta()),
18 buffer_size_(buffer_size) { 14 buffer_size_(buffer_size) {
19 Initialize(); 15 Initialize();
20 } 16 }
21 17
22 DecoderBuffer::DecoderBuffer(const uint8* data, int buffer_size) 18 DecoderBuffer::DecoderBuffer(const uint8* data, int buffer_size)
23 : Buffer(base::TimeDelta(), base::TimeDelta()), 19 : Buffer(base::TimeDelta(), base::TimeDelta()),
24 buffer_size_(buffer_size) { 20 buffer_size_(buffer_size) {
25 // Prevent invalid allocations. Also used to create end of stream buffers. 21 // Prevent invalid allocations. Also used to create end of stream buffers.
26 if (!data) { 22 if (!data || buffer_size <= 0) {
27 buffer_size_ = 0; 23 buffer_size_ = 0;
28 data_ = NULL;
29 return; 24 return;
30 } 25 }
31 26
32 Initialize(); 27 Initialize();
33 memcpy(data_, data, buffer_size_); 28 memcpy(data_.get(), data, buffer_size_);
34 } 29 }
35 30
36 DecoderBuffer::~DecoderBuffer() { 31 DecoderBuffer::~DecoderBuffer() {}
37 #if !defined(OS_ANDROID)
38 base::AlignedFree(data_);
39 #else
40 delete[] data_;
41 #endif
42 }
43 32
44 void DecoderBuffer::Initialize() { 33 void DecoderBuffer::Initialize() {
45 DCHECK_GE(buffer_size_, 0); 34 DCHECK_GE(buffer_size_, 0);
46 #if !defined(OS_ANDROID) 35 data_.reset(reinterpret_cast<uint8*>(
47 data_ = reinterpret_cast<uint8*>( 36 base::AlignedAlloc(buffer_size_ + kPaddingSize, kAlignmentSize)));
48 base::AlignedAlloc(buffer_size_ + kPaddingSize, kAlignmentSize)); 37 memset(data_.get() + buffer_size_, 0, kPaddingSize);
49 memset(data_ + buffer_size_, 0, kPaddingSize);
50 #else
51 data_ = new uint8[buffer_size_];
52 #endif
53 } 38 }
54 39
55 scoped_refptr<DecoderBuffer> DecoderBuffer::CopyFrom(const uint8* data, 40 scoped_refptr<DecoderBuffer> DecoderBuffer::CopyFrom(const uint8* data,
56 int data_size) { 41 int data_size) {
57 DCHECK(data); 42 DCHECK(data);
58 return make_scoped_refptr(new DecoderBuffer(data, data_size)); 43 return make_scoped_refptr(new DecoderBuffer(data, data_size));
59 } 44 }
60 45
61 scoped_refptr<DecoderBuffer> DecoderBuffer::CreateEOSBuffer() { 46 scoped_refptr<DecoderBuffer> DecoderBuffer::CreateEOSBuffer() {
62 return make_scoped_refptr(new DecoderBuffer(NULL, 0)); 47 return make_scoped_refptr(new DecoderBuffer(NULL, 0));
63 } 48 }
64 49
65 const uint8* DecoderBuffer::GetData() const { 50 const uint8* DecoderBuffer::GetData() const {
66 return data_; 51 return data_.get();
67 } 52 }
68 53
69 int DecoderBuffer::GetDataSize() const { 54 int DecoderBuffer::GetDataSize() const {
70 return buffer_size_; 55 return buffer_size_;
71 } 56 }
72 57
73 uint8* DecoderBuffer::GetWritableData() { 58 uint8* DecoderBuffer::GetWritableData() {
74 return data_; 59 return data_.get();
75 } 60 }
76 61
77 const DecryptConfig* DecoderBuffer::GetDecryptConfig() const { 62 const DecryptConfig* DecoderBuffer::GetDecryptConfig() const {
78 return decrypt_config_.get(); 63 return decrypt_config_.get();
79 } 64 }
80 65
81 void DecoderBuffer::SetDecryptConfig(scoped_ptr<DecryptConfig> decrypt_config) { 66 void DecoderBuffer::SetDecryptConfig(scoped_ptr<DecryptConfig> decrypt_config) {
82 decrypt_config_ = decrypt_config.Pass(); 67 decrypt_config_ = decrypt_config.Pass();
83 } 68 }
84 69
85 } // namespace media 70 } // namespace media
OLDNEW
« no previous file with comments | « media/base/decoder_buffer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698