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

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

Issue 212103013: Add channel_count parameter back to AudioBuffer creation methods. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mstr
Patch Set: fix unit test Created 6 years, 8 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
« no previous file with comments | « media/base/audio_buffer.h ('k') | media/base/audio_buffer_converter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/audio_buffer.h" 5 #include "media/base/audio_buffer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "media/base/audio_bus.h" 8 #include "media/base/audio_bus.h"
9 #include "media/base/buffers.h" 9 #include "media/base/buffers.h"
10 #include "media/base/limits.h" 10 #include "media/base/limits.h"
11 11
12 namespace media { 12 namespace media {
13 13
14 AudioBuffer::AudioBuffer(SampleFormat sample_format, 14 AudioBuffer::AudioBuffer(SampleFormat sample_format,
15 ChannelLayout channel_layout, 15 ChannelLayout channel_layout,
16 int channel_count,
16 int sample_rate, 17 int sample_rate,
17 int frame_count, 18 int frame_count,
18 bool create_buffer, 19 bool create_buffer,
19 const uint8* const* data, 20 const uint8* const* data,
20 const base::TimeDelta timestamp, 21 const base::TimeDelta timestamp,
21 const base::TimeDelta duration) 22 const base::TimeDelta duration)
22 : sample_format_(sample_format), 23 : sample_format_(sample_format),
23 channel_layout_(channel_layout), 24 channel_layout_(channel_layout),
24 channel_count_(ChannelLayoutToChannelCount(channel_layout)), 25 channel_count_(channel_count),
25 sample_rate_(sample_rate), 26 sample_rate_(sample_rate),
26 adjusted_frame_count_(frame_count), 27 adjusted_frame_count_(frame_count),
27 trim_start_(0), 28 trim_start_(0),
28 end_of_stream_(!create_buffer && data == NULL && frame_count == 0), 29 end_of_stream_(!create_buffer && data == NULL && frame_count == 0),
29 timestamp_(timestamp), 30 timestamp_(timestamp),
30 duration_(duration) { 31 duration_(duration) {
31 CHECK_GE(channel_count_, 0); 32 CHECK_GE(channel_count_, 0);
32 CHECK_LE(channel_count_, limits::kMaxChannels); 33 CHECK_LE(channel_count_, limits::kMaxChannels);
33 CHECK_GE(frame_count, 0); 34 CHECK_GE(frame_count, 0);
35 DCHECK(channel_layout == CHANNEL_LAYOUT_DISCRETE ||
36 ChannelLayoutToChannelCount(channel_layout) == channel_count);
37
34 int bytes_per_channel = SampleFormatToBytesPerChannel(sample_format); 38 int bytes_per_channel = SampleFormatToBytesPerChannel(sample_format);
35 DCHECK_LE(bytes_per_channel, kChannelAlignment); 39 DCHECK_LE(bytes_per_channel, kChannelAlignment);
36 int data_size = frame_count * bytes_per_channel; 40 int data_size = frame_count * bytes_per_channel;
37 41
38 // Empty buffer? 42 // Empty buffer?
39 if (!create_buffer) 43 if (!create_buffer)
40 return; 44 return;
41 45
42 if (sample_format == kSampleFormatPlanarF32 || 46 if (sample_format == kSampleFormatPlanarF32 ||
43 sample_format == kSampleFormatPlanarS16) { 47 sample_format == kSampleFormatPlanarS16) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 if (data) 80 if (data)
77 memcpy(data_.get(), data[0], data_size); 81 memcpy(data_.get(), data[0], data_size);
78 } 82 }
79 83
80 AudioBuffer::~AudioBuffer() {} 84 AudioBuffer::~AudioBuffer() {}
81 85
82 // static 86 // static
83 scoped_refptr<AudioBuffer> AudioBuffer::CopyFrom( 87 scoped_refptr<AudioBuffer> AudioBuffer::CopyFrom(
84 SampleFormat sample_format, 88 SampleFormat sample_format,
85 ChannelLayout channel_layout, 89 ChannelLayout channel_layout,
90 int channel_count,
86 int sample_rate, 91 int sample_rate,
87 int frame_count, 92 int frame_count,
88 const uint8* const* data, 93 const uint8* const* data,
89 const base::TimeDelta timestamp, 94 const base::TimeDelta timestamp,
90 const base::TimeDelta duration) { 95 const base::TimeDelta duration) {
91 // If you hit this CHECK you likely have a bug in a demuxer. Go fix it. 96 // If you hit this CHECK you likely have a bug in a demuxer. Go fix it.
92 CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer. 97 CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer.
93 CHECK(data[0]); 98 CHECK(data[0]);
94 return make_scoped_refptr(new AudioBuffer(sample_format, 99 return make_scoped_refptr(new AudioBuffer(sample_format,
95 channel_layout, 100 channel_layout,
101 channel_count,
96 sample_rate, 102 sample_rate,
97 frame_count, 103 frame_count,
98 true, 104 true,
99 data, 105 data,
100 timestamp, 106 timestamp,
101 duration)); 107 duration));
102 } 108 }
103 109
104 // static 110 // static
105 scoped_refptr<AudioBuffer> AudioBuffer::CreateBuffer( 111 scoped_refptr<AudioBuffer> AudioBuffer::CreateBuffer(
106 SampleFormat sample_format, 112 SampleFormat sample_format,
107 ChannelLayout channel_layout, 113 ChannelLayout channel_layout,
114 int channel_count,
108 int sample_rate, 115 int sample_rate,
109 int frame_count) { 116 int frame_count) {
110 CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer. 117 CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer.
111 return make_scoped_refptr(new AudioBuffer(sample_format, 118 return make_scoped_refptr(new AudioBuffer(sample_format,
112 channel_layout, 119 channel_layout,
120 channel_count,
113 sample_rate, 121 sample_rate,
114 frame_count, 122 frame_count,
115 true, 123 true,
116 NULL, 124 NULL,
117 kNoTimestamp(), 125 kNoTimestamp(),
118 kNoTimestamp())); 126 kNoTimestamp()));
119 } 127 }
120 128
121 // static 129 // static
122 scoped_refptr<AudioBuffer> AudioBuffer::CreateEmptyBuffer( 130 scoped_refptr<AudioBuffer> AudioBuffer::CreateEmptyBuffer(
123 ChannelLayout channel_layout, 131 ChannelLayout channel_layout,
132 int channel_count,
124 int sample_rate, 133 int sample_rate,
125 int frame_count, 134 int frame_count,
126 const base::TimeDelta timestamp, 135 const base::TimeDelta timestamp,
127 const base::TimeDelta duration) { 136 const base::TimeDelta duration) {
128 CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer. 137 CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer.
129 // Since data == NULL, format doesn't matter. 138 // Since data == NULL, format doesn't matter.
130 return make_scoped_refptr(new AudioBuffer(kSampleFormatF32, 139 return make_scoped_refptr(new AudioBuffer(kSampleFormatF32,
131 channel_layout, 140 channel_layout,
141 channel_count,
132 sample_rate, 142 sample_rate,
133 frame_count, 143 frame_count,
134 false, 144 false,
135 NULL, 145 NULL,
136 timestamp, 146 timestamp,
137 duration)); 147 duration));
138 } 148 }
139 149
140 // static 150 // static
141 scoped_refptr<AudioBuffer> AudioBuffer::CreateEOSBuffer() { 151 scoped_refptr<AudioBuffer> AudioBuffer::CreateEOSBuffer() {
142 return make_scoped_refptr(new AudioBuffer(kUnknownSampleFormat, 152 return make_scoped_refptr(new AudioBuffer(kUnknownSampleFormat,
143 CHANNEL_LAYOUT_NONE, 153 CHANNEL_LAYOUT_NONE,
144 0, 154 0,
145 0, 155 0,
156 0,
146 false, 157 false,
147 NULL, 158 NULL,
148 kNoTimestamp(), 159 kNoTimestamp(),
149 kNoTimestamp())); 160 kNoTimestamp()));
150 } 161 }
151 162
152 // Convert int16 values in the range [kint16min, kint16max] to [-1.0, 1.0]. 163 // Convert int16 values in the range [kint16min, kint16max] to [-1.0, 1.0].
153 static inline float ConvertS16ToFloat(int16 value) { 164 static inline float ConvertS16ToFloat(int16 value) {
154 return value * (value < 0 ? -1.0f / kint16min : 1.0f / kint16max); 165 return value * (value < 0 ? -1.0f / kint16min : 1.0f / kint16max);
155 } 166 }
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 frames_to_trim / adjusted_frame_count_; 269 frames_to_trim / adjusted_frame_count_;
259 base::TimeDelta offset_as_time = 270 base::TimeDelta offset_as_time =
260 base::TimeDelta::FromMicroseconds(static_cast<int64>(offset)); 271 base::TimeDelta::FromMicroseconds(static_cast<int64>(offset));
261 duration_ -= offset_as_time; 272 duration_ -= offset_as_time;
262 273
263 // Finally adjust the number of frames in this buffer. 274 // Finally adjust the number of frames in this buffer.
264 adjusted_frame_count_ -= frames_to_trim; 275 adjusted_frame_count_ -= frames_to_trim;
265 } 276 }
266 277
267 } // namespace media 278 } // namespace media
OLDNEW
« no previous file with comments | « media/base/audio_buffer.h ('k') | media/base/audio_buffer_converter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698