OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/cast/test/fake_media_source.h" | 5 #include "media/cast/test/fake_media_source.h" |
6 | 6 |
7 #include "base/files/memory_mapped_file.h" | 7 #include "base/files/memory_mapped_file.h" |
8 #include "base/files/scoped_file.h" | 8 #include "base/files/scoped_file.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 // Send fake patterns. | 200 // Send fake patterns. |
201 task_runner_->PostTask( | 201 task_runner_->PostTask( |
202 FROM_HERE, | 202 FROM_HERE, |
203 base::Bind( | 203 base::Bind( |
204 &FakeMediaSource::SendNextFakeFrame, | 204 &FakeMediaSource::SendNextFakeFrame, |
205 base::Unretained(this))); | 205 base::Unretained(this))); |
206 return; | 206 return; |
207 } | 207 } |
208 | 208 |
209 // Send transcoding streams. | 209 // Send transcoding streams. |
210 audio_algo_.Initialize(playback_rate_, audio_params_); | 210 audio_algo_.Initialize(audio_params_); |
211 audio_algo_.FlushBuffers(); | 211 audio_algo_.FlushBuffers(); |
212 audio_fifo_input_bus_ = | 212 audio_fifo_input_bus_ = |
213 AudioBus::Create( | 213 AudioBus::Create( |
214 audio_params_.channels(), audio_params_.frames_per_buffer()); | 214 audio_params_.channels(), audio_params_.frames_per_buffer()); |
215 // Audio FIFO can carry all data fron AudioRendererAlgorithm. | 215 // Audio FIFO can carry all data fron AudioRendererAlgorithm. |
216 audio_fifo_.reset( | 216 audio_fifo_.reset( |
217 new AudioFifo(audio_params_.channels(), | 217 new AudioFifo(audio_params_.channels(), |
218 audio_algo_.QueueCapacity())); | 218 audio_algo_.QueueCapacity())); |
219 audio_resampler_.reset(new media::MultiChannelResampler( | 219 audio_resampler_.reset(new media::MultiChannelResampler( |
220 audio_params_.channels(), | 220 audio_params_.channels(), |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 audio_algo_.EnqueueBuffer(buffer); | 469 audio_algo_.EnqueueBuffer(buffer); |
470 av_frame_unref(avframe); | 470 av_frame_unref(avframe); |
471 } while (packet_temp.size > 0); | 471 } while (packet_temp.size > 0); |
472 av_frame_free(&avframe); | 472 av_frame_free(&avframe); |
473 | 473 |
474 const int frames_needed_to_scale = | 474 const int frames_needed_to_scale = |
475 playback_rate_ * av_audio_context()->sample_rate / | 475 playback_rate_ * av_audio_context()->sample_rate / |
476 kAudioPacketsPerSecond; | 476 kAudioPacketsPerSecond; |
477 while (frames_needed_to_scale <= audio_algo_.frames_buffered()) { | 477 while (frames_needed_to_scale <= audio_algo_.frames_buffered()) { |
478 if (!audio_algo_.FillBuffer(audio_fifo_input_bus_.get(), | 478 if (!audio_algo_.FillBuffer(audio_fifo_input_bus_.get(), |
479 audio_fifo_input_bus_->frames())) { | 479 audio_fifo_input_bus_->frames(), |
| 480 playback_rate_)) { |
480 // Nothing can be scaled. Decode some more. | 481 // Nothing can be scaled. Decode some more. |
481 return; | 482 return; |
482 } | 483 } |
483 | 484 |
484 // Prevent overflow of audio data in the FIFO. | 485 // Prevent overflow of audio data in the FIFO. |
485 if (audio_fifo_input_bus_->frames() + audio_fifo_->frames() | 486 if (audio_fifo_input_bus_->frames() + audio_fifo_->frames() |
486 <= audio_fifo_->max_frames()) { | 487 <= audio_fifo_->max_frames()) { |
487 audio_fifo_->Push(audio_fifo_input_bus_.get()); | 488 audio_fifo_->Push(audio_fifo_input_bus_.get()); |
488 } else { | 489 } else { |
489 LOG(WARNING) << "Audio FIFO full; dropping samples."; | 490 LOG(WARNING) << "Audio FIFO full; dropping samples."; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 AVCodecContext* FakeMediaSource::av_audio_context() { | 586 AVCodecContext* FakeMediaSource::av_audio_context() { |
586 return av_audio_stream()->codec; | 587 return av_audio_stream()->codec; |
587 } | 588 } |
588 | 589 |
589 AVCodecContext* FakeMediaSource::av_video_context() { | 590 AVCodecContext* FakeMediaSource::av_video_context() { |
590 return av_video_stream()->codec; | 591 return av_video_stream()->codec; |
591 } | 592 } |
592 | 593 |
593 } // namespace cast | 594 } // namespace cast |
594 } // namespace media | 595 } // namespace media |
OLD | NEW |