| Index: chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc
|
| diff --git a/chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc b/chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc
|
| index 35d25ccefcb3a339f23a7e1af4240487ea40649a..db94010871dcc17a8c891c572447af9ddeeafddf 100644
|
| --- a/chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc
|
| +++ b/chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc
|
| @@ -22,8 +22,8 @@
|
| #include "chromecast/base/chromecast_switches.h"
|
| #include "chromecast/media/base/audio_device_ids.h"
|
| #include "chromecast/media/cma/backend/alsa/alsa_wrapper.h"
|
| -#include "chromecast/media/cma/backend/alsa/audio_filter_factory.h"
|
| #include "chromecast/media/cma/backend/alsa/filter_group.h"
|
| +#include "chromecast/media/cma/backend/alsa/post_processing_pipeline_parser.h"
|
| #include "chromecast/media/cma/backend/alsa/stream_mixer_alsa_input_impl.h"
|
| #include "media/audio/audio_device_description.h"
|
| #include "media/base/audio_bus.h"
|
| @@ -215,25 +215,35 @@ StreamMixerAlsa::StreamMixerAlsa()
|
| ? kLowSampleRateCutoff
|
| : 0;
|
|
|
| + // Read post-processing configuration file
|
| + PostProcessingPipelineParser pipeline_parser;
|
| + pipeline_parser.Initialize();
|
| +
|
| // Create filter groups.
|
| // TODO(bshaya): Switch to filter groups based on AudioContentType.
|
| filter_groups_.push_back(base::MakeUnique<FilterGroup>(
|
| std::unordered_set<std::string>(
|
| {::media::AudioDeviceDescription::kCommunicationsDeviceId}),
|
| - AudioFilterFactory::COMMUNICATION_AUDIO_FILTER,
|
| - AudioContentType::kMedia));
|
| + AudioContentType::kMedia, kNumOutputChannels,
|
| + pipeline_parser.GetPipelineByDeviceId(
|
| + ::media::AudioDeviceDescription::kCommunicationsDeviceId)));
|
| filter_groups_.push_back(base::MakeUnique<FilterGroup>(
|
| std::unordered_set<std::string>({kAlarmAudioDeviceId}),
|
| - AudioFilterFactory::ALARM_AUDIO_FILTER, AudioContentType::kAlarm));
|
| + AudioContentType::kAlarm, kNumOutputChannels,
|
| + pipeline_parser.GetPipelineByDeviceId(kAlarmAudioDeviceId)));
|
| filter_groups_.push_back(base::MakeUnique<FilterGroup>(
|
| std::unordered_set<std::string>({kTtsAudioDeviceId}),
|
| - AudioFilterFactory::TTS_AUDIO_FILTER, AudioContentType::kCommunication));
|
| + AudioContentType::kCommunication, kNumOutputChannels,
|
| + pipeline_parser.GetPipelineByDeviceId(kTtsAudioDeviceId)));
|
| filter_groups_.push_back(base::MakeUnique<FilterGroup>(
|
| std::unordered_set<std::string>(
|
| {::media::AudioDeviceDescription::kDefaultDeviceId,
|
| kLocalAudioDeviceId, ""}),
|
| - AudioFilterFactory::MEDIA_AUDIO_FILTER, AudioContentType::kMedia));
|
| + AudioContentType::kMedia, kNumOutputChannels,
|
| + pipeline_parser.GetPipelineByDeviceId(
|
| + ::media::AudioDeviceDescription::kDefaultDeviceId)));
|
|
|
| + // TODO(bshaya): Add support for final mix AudioPostProcessor.
|
| DefineAlsaParameters();
|
| }
|
|
|
| @@ -499,8 +509,7 @@ void StreamMixerAlsa::Start() {
|
|
|
| // Initialize filters
|
| for (auto&& filter_group : filter_groups_) {
|
| - filter_group->Initialize(output_samples_per_second_,
|
| - ::media::SampleFormat::kSampleFormatS32);
|
| + filter_group->Initialize(output_samples_per_second_);
|
| }
|
|
|
| RETURN_REPORT_ERROR(PcmPrepare, pcm_);
|
| @@ -887,6 +896,7 @@ void StreamMixerAlsa::UpdateRenderingDelay(int newly_pushed_frames) {
|
| DCHECK(mixer_task_runner_->BelongsToCurrentThread());
|
| CHECK_PCM_INITIALIZED();
|
|
|
| + // TODO(bshaya): Add rendering delay from post-processors.
|
| if (alsa_->PcmStatus(pcm_, pcm_status_) != 0 ||
|
| alsa_->PcmStatusGetState(pcm_status_) != SND_PCM_STATE_RUNNING) {
|
| rendering_delay_.timestamp_microseconds = kNoTimestamp;
|
|
|