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

Side by Side Diff: media/base/audio_splicer.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_unittest.cc ('k') | media/base/audio_splicer_unittest.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 (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/audio_splicer.h" 5 #include "media/base/audio_splicer.h"
6 6
7 #include <cstdlib> 7 #include <cstdlib>
8 #include <deque> 8 #include <deque>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 } 175 }
176 176
177 if (frames_to_fill > 0) { 177 if (frames_to_fill > 0) {
178 DVLOG(1) << "Gap detected @ " << expected_timestamp.InMicroseconds() 178 DVLOG(1) << "Gap detected @ " << expected_timestamp.InMicroseconds()
179 << " us: " << delta.InMicroseconds() << " us"; 179 << " us: " << delta.InMicroseconds() << " us";
180 180
181 // Create a buffer with enough silence samples to fill the gap and 181 // Create a buffer with enough silence samples to fill the gap and
182 // add it to the output buffer. 182 // add it to the output buffer.
183 scoped_refptr<AudioBuffer> gap = AudioBuffer::CreateEmptyBuffer( 183 scoped_refptr<AudioBuffer> gap = AudioBuffer::CreateEmptyBuffer(
184 input->channel_layout(), 184 input->channel_layout(),
185 input->channel_count(),
185 input->sample_rate(), 186 input->sample_rate(),
186 frames_to_fill, 187 frames_to_fill,
187 expected_timestamp, 188 expected_timestamp,
188 output_timestamp_helper_.GetFrameDuration(frames_to_fill)); 189 output_timestamp_helper_.GetFrameDuration(frames_to_fill));
189 AddOutputBuffer(gap); 190 AddOutputBuffer(gap);
190 191
191 // Add the input buffer now that the gap has been filled. 192 // Add the input buffer now that the gap has been filled.
192 AddOutputBuffer(input); 193 AddOutputBuffer(input);
193 return true; 194 return true;
194 } 195 }
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 scoped_refptr<AudioBuffer> preroll = pre_splice_sanitizer_->GetNextBuffer(); 427 scoped_refptr<AudioBuffer> preroll = pre_splice_sanitizer_->GetNextBuffer();
427 428
428 // We don't know the channel count until we see the first buffer, so wait 429 // We don't know the channel count until we see the first buffer, so wait
429 // until the first buffer to allocate the output AudioBus. 430 // until the first buffer to allocate the output AudioBus.
430 if (!output_bus) { 431 if (!output_bus) {
431 output_bus = 432 output_bus =
432 AudioBus::Create(preroll->channel_count(), frames_to_crossfade); 433 AudioBus::Create(preroll->channel_count(), frames_to_crossfade);
433 // Allocate output buffer for crossfade. 434 // Allocate output buffer for crossfade.
434 *crossfade_buffer = AudioBuffer::CreateBuffer(kSampleFormatPlanarF32, 435 *crossfade_buffer = AudioBuffer::CreateBuffer(kSampleFormatPlanarF32,
435 preroll->channel_layout(), 436 preroll->channel_layout(),
437 preroll->channel_count(),
436 preroll->sample_rate(), 438 preroll->sample_rate(),
437 frames_to_crossfade); 439 frames_to_crossfade);
438 } 440 }
439 441
440 // There may be enough of a gap introduced during decoding such that an 442 // There may be enough of a gap introduced during decoding such that an
441 // entire buffer exists before the splice point. 443 // entire buffer exists before the splice point.
442 if (frames_before_splice >= preroll->frame_count()) { 444 if (frames_before_splice >= preroll->frame_count()) {
443 // Adjust the number of frames remaining before the splice. NOTE: This is 445 // Adjust the number of frames remaining before the splice. NOTE: This is
444 // safe since |pre_splice_sanitizer_| is a continuation of the timeline in 446 // safe since |pre_splice_sanitizer_| is a continuation of the timeline in
445 // |output_sanitizer_|. As such we're guaranteed there are no gaps or 447 // |output_sanitizer_|. As such we're guaranteed there are no gaps or
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 AccurateTrimStart(frames_to_trim, remainder, output_ts_helper); 529 AccurateTrimStart(frames_to_trim, remainder, output_ts_helper);
528 CHECK(output_sanitizer_->AddInput(remainder)); 530 CHECK(output_sanitizer_->AddInput(remainder));
529 } 531 }
530 532
531 // Transfer all remaining buffers out and reset once empty. 533 // Transfer all remaining buffers out and reset once empty.
532 CHECK(post_splice_sanitizer_->DrainInto(output_sanitizer_.get())); 534 CHECK(post_splice_sanitizer_->DrainInto(output_sanitizer_.get()));
533 post_splice_sanitizer_->Reset(); 535 post_splice_sanitizer_->Reset();
534 } 536 }
535 537
536 } // namespace media 538 } // namespace media
OLDNEW
« no previous file with comments | « media/base/audio_buffer_unittest.cc ('k') | media/base/audio_splicer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698