diff options
author | finnur <finnur@chromium.org> | 2015-03-04 00:43:07 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-04 08:43:36 +0000 |
commit | ee687fd9c6c2bc41642cd8b65de87fe548a3cf75 (patch) | |
tree | 73ea93b22cefe079ea2cec25b6422f6ff2945aec /chromecast/renderer | |
parent | 87bd8b465b5de163a9e8583f8619b7602c4dd889 (diff) | |
download | chromium_src-ee687fd9c6c2bc41642cd8b65de87fe548a3cf75.zip chromium_src-ee687fd9c6c2bc41642cd8b65de87fe548a3cf75.tar.gz chromium_src-ee687fd9c6c2bc41642cd8b65de87fe548a3cf75.tar.bz2 |
Revert of Chromecast: Play audio streams not supported by CMA via default renderer (patchset #5 id:70001 of https://codereview.chromium.org/973633002/)
Reason for revert:
Audio tests started failing consistently in the next build after this was checked in. See:
https://build.chromium.org/p/chromium.mac/builders/Mac10.9%20Tests/builds/3762
Not sure if this CL is the culprit, but seems the most likely one, so attempting a revert to see if it fixes the problem.
Error:
[ RUN ] AudioRecorderTest.BasicRecordAndStop
../../components/audio_modem/audio_recorder_unittest.cc:203: Failure
Value of: IsRecording()
Actual: false
Expected: true
../../components/audio_modem/audio_recorder_unittest.cc:208: Failure
Value of: IsRecording()
Actual: false
Expected: true
../../components/audio_modem/audio_recorder_unittest.cc:213: Failure
Value of: IsRecording()
Actual: false
Expected: true
[ FAILED ] AudioRecorderTest.BasicRecordAndStop (1292 ms)
Original issue's description:
> Chromecast: Play audio streams not supported by CMA via default renderer
>
> For Chromecast we want to choose which media renderer to use based on
> the types of input content streams. We will use CMA media renderer for
> media types that are supported by our hardware (H264, AAC, etc) and
> will use the default media renderer for audio streams other than AAC
> or Vorbis. This will allow us support software decoding of FLAC and
> Opus via the default Chrome audio path.
>
> BUG=457959
>
> Committed: https://crrev.com/2e583073b996e66d62f709dd2ffde9e1ef58b276
> Cr-Commit-Position: refs/heads/master@{#318941}
TBR=gunsch@chromium.org,lcwu@chromium.org,dalecurtis@chromium.org,servolk@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=457959
Review URL: https://codereview.chromium.org/981473003
Cr-Commit-Position: refs/heads/master@{#319033}
Diffstat (limited to 'chromecast/renderer')
6 files changed, 72 insertions, 121 deletions
diff --git a/chromecast/renderer/DEPS b/chromecast/renderer/DEPS index 1015677..22bc1dd 100644 --- a/chromecast/renderer/DEPS +++ b/chromecast/renderer/DEPS @@ -6,7 +6,6 @@ include_rules = [ "+components/network_hints/renderer", "+content/public/renderer", "+media/base", - "+media/renderers", "+third_party/WebKit/public/platform", "+third_party/WebKit/public/web", ] diff --git a/chromecast/renderer/cast_content_renderer_client.cc b/chromecast/renderer/cast_content_renderer_client.cc index 7c9ea22..1bb0930 100644 --- a/chromecast/renderer/cast_content_renderer_client.cc +++ b/chromecast/renderer/cast_content_renderer_client.cc @@ -13,7 +13,7 @@ #include "chromecast/renderer/cast_media_load_deferrer.h" #include "chromecast/renderer/cast_render_process_observer.h" #include "chromecast/renderer/key_systems_cast.h" -#include "chromecast/renderer/media/chromecast_media_renderer_factory.h" +#include "chromecast/renderer/media/cma_media_renderer_factory.h" #include "components/network_hints/renderer/prescient_networking_dispatcher.h" #include "content/public/common/content_switches.h" #include "content/public/renderer/render_frame.h" @@ -160,8 +160,8 @@ CastContentRendererClient::CreateMediaRendererFactory( return nullptr; return scoped_ptr<::media::RendererFactory>( - new chromecast::media::ChromecastMediaRendererFactory( - media_log, render_frame->GetRoutingID())); + new chromecast::media::CmaMediaRendererFactory( + render_frame->GetRoutingID())); } #endif diff --git a/chromecast/renderer/media/chromecast_media_renderer_factory.cc b/chromecast/renderer/media/chromecast_media_renderer_factory.cc deleted file mode 100644 index cdfab39..0000000 --- a/chromecast/renderer/media/chromecast_media_renderer_factory.cc +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chromecast/renderer/media/chromecast_media_renderer_factory.h" - -#include "base/command_line.h" -#include "chromecast/media/base/switching_media_renderer.h" -#include "chromecast/media/cma/filters/cma_renderer.h" -#include "chromecast/renderer/media/media_pipeline_proxy.h" -#include "content/public/renderer/render_thread.h" -#include "media/base/audio_hardware_config.h" -#include "media/base/media_log.h" -#include "media/renderers/default_renderer_factory.h" -#include "media/renderers/gpu_video_accelerator_factories.h" - -namespace chromecast { -namespace media { - -ChromecastMediaRendererFactory::ChromecastMediaRendererFactory( - const scoped_refptr<::media::MediaLog>& media_log, - int render_frame_id) - : render_frame_id_(render_frame_id), - media_log_(media_log) { -} - -ChromecastMediaRendererFactory::~ChromecastMediaRendererFactory() { -} - -scoped_ptr<::media::Renderer> ChromecastMediaRendererFactory::CreateRenderer( - const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, - ::media::AudioRendererSink* audio_renderer_sink) { - if (!default_render_factory_) { - // Chromecast doesn't have input audio devices, so leave this uninitialized - ::media::AudioParameters input_audio_params; - // TODO(servolk): Audio parameters are hardcoded for now, but in the future - // either we need to obtain AudioHardwareConfig from RenderThreadImpl, - // or media renderer needs to figure out optimal audio parameters itself. - const int kDefaultSamplingRate = 48000; - const int kDefaultBitsPerSample = 16; - // About 20ms of stereo (2 channels) 16bit (2 byte) audio - int buffer_size = kDefaultSamplingRate * 20 * 2 * 2 / 1000; - ::media::AudioParameters output_audio_params( - ::media::AudioParameters::AUDIO_PCM_LOW_LATENCY, - ::media::CHANNEL_LAYOUT_STEREO, - kDefaultSamplingRate, kDefaultBitsPerSample, - buffer_size, ::media::AudioParameters::NO_EFFECTS); - ::media::AudioHardwareConfig audio_config(input_audio_params, - output_audio_params); - - default_render_factory_.reset(new ::media::DefaultRendererFactory( - media_log_, /*gpu_factories*/ nullptr, audio_config)); - } - - DCHECK(default_render_factory_); - // TODO(erickung): crbug.com/443956. Need to provide right LoadType. - LoadType cma_load_type = kLoadTypeMediaSource; - scoped_ptr<MediaPipeline> cma_media_pipeline( - new MediaPipelineProxy( - render_frame_id_, - content::RenderThread::Get()->GetIOMessageLoopProxy(), - cma_load_type)); - scoped_ptr<CmaRenderer> cma_renderer( - new CmaRenderer(cma_media_pipeline.Pass())); - scoped_ptr<::media::Renderer> default_media_render( - default_render_factory_->CreateRenderer(media_task_runner, - audio_renderer_sink)); - scoped_ptr<SwitchingMediaRenderer> media_renderer(new SwitchingMediaRenderer( - default_media_render.Pass(), cma_renderer.Pass())); - return media_renderer.Pass(); -} - -} // namespace media -} // namespace chromecast diff --git a/chromecast/renderer/media/chromecast_media_renderer_factory.h b/chromecast/renderer/media/chromecast_media_renderer_factory.h deleted file mode 100644 index f880ff6..0000000 --- a/chromecast/renderer/media/chromecast_media_renderer_factory.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROMECAST_RENDERER_MEDIA_CHROMECAST_MEDIA_RENDERER_FACTORY_H_ -#define CHROMECAST_RENDERER_MEDIA_CHROMECAST_MEDIA_RENDERER_FACTORY_H_ - -#include "base/macros.h" -#include "base/memory/ref_counted.h" -#include "media/base/renderer_factory.h" - -namespace media { -class MediaLog; -class DefaultRendererFactory; -} - -namespace chromecast { -namespace media { - -class ChromecastMediaRendererFactory : public ::media::RendererFactory { - public: - ChromecastMediaRendererFactory( - const scoped_refptr<::media::MediaLog>& media_log, - int render_frame_id); - ~ChromecastMediaRendererFactory() final; - - // ::media::RendererFactory implementation. - scoped_ptr<::media::Renderer> CreateRenderer( - const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, - ::media::AudioRendererSink* audio_renderer_sink) final; - - private: - int render_frame_id_; - scoped_refptr<::media::MediaLog> media_log_; - scoped_ptr<::media::DefaultRendererFactory> default_render_factory_; - - DISALLOW_COPY_AND_ASSIGN(ChromecastMediaRendererFactory); -}; - -} // namespace media -} // namespace chromecast - -#endif // CHROMECAST_RENDERER_MEDIA_CHROMECAST_MEDIA_RENDERER_FACTORY_H_ diff --git a/chromecast/renderer/media/cma_media_renderer_factory.cc b/chromecast/renderer/media/cma_media_renderer_factory.cc new file mode 100644 index 0000000..2a38149 --- /dev/null +++ b/chromecast/renderer/media/cma_media_renderer_factory.cc @@ -0,0 +1,37 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/renderer/media/cma_media_renderer_factory.h" + +#include "base/command_line.h" +#include "chromecast/media/cma/filters/cma_renderer.h" +#include "chromecast/renderer/media/media_pipeline_proxy.h" +#include "content/public/renderer/render_thread.h" + +namespace chromecast { +namespace media { + +CmaMediaRendererFactory::CmaMediaRendererFactory(int render_frame_id) + : render_frame_id_(render_frame_id) { +} + +CmaMediaRendererFactory::~CmaMediaRendererFactory() { +} + +scoped_ptr< ::media::Renderer> CmaMediaRendererFactory::CreateRenderer( + const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, + ::media::AudioRendererSink* audio_renderer_sink) { + // TODO(erickung): crbug.com/443956. Need to provide right LoadType. + LoadType cma_load_type = kLoadTypeMediaSource; + scoped_ptr<MediaPipeline> cma_media_pipeline( + new MediaPipelineProxy( + render_frame_id_, + content::RenderThread::Get()->GetIOMessageLoopProxy(), + cma_load_type)); + return scoped_ptr< ::media::Renderer>( + new CmaRenderer(cma_media_pipeline.Pass())); +} + +} // namespace media +} // namespace chromecast
\ No newline at end of file diff --git a/chromecast/renderer/media/cma_media_renderer_factory.h b/chromecast/renderer/media/cma_media_renderer_factory.h new file mode 100644 index 0000000..b14b3d7 --- /dev/null +++ b/chromecast/renderer/media/cma_media_renderer_factory.h @@ -0,0 +1,32 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_RENDERER_MEDIA_CMA_MEDIA_RENDERER_FACTORY_H_ +#define CHROMECAST_RENDERER_MEDIA_CMA_MEDIA_RENDERER_FACTORY_H_ + +#include "base/macros.h" +#include "media/base/renderer_factory.h" + +namespace chromecast { +namespace media { + +class CmaMediaRendererFactory : public ::media::RendererFactory { + public: + explicit CmaMediaRendererFactory(int render_frame_id); + ~CmaMediaRendererFactory() final; + + // ::media::RendererFactory implementation. + scoped_ptr< ::media::Renderer> CreateRenderer( + const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, + ::media::AudioRendererSink* audio_renderer_sink) final; + + private: + int render_frame_id_; + DISALLOW_COPY_AND_ASSIGN(CmaMediaRendererFactory); +}; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_RENDERER_MEDIA_CMA_MEDIA_RENDERER_FACTORY_H_
\ No newline at end of file |