| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/glue/webmediaplayer_impl.h" | 5 #include "webkit/glue/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 |
| 13 #include "content/renderer/render_audiosourceprovider.h" |
| 12 #include "media/base/composite_data_source_factory.h" | 14 #include "media/base/composite_data_source_factory.h" |
| 13 #include "media/base/filter_collection.h" | 15 #include "media/base/filter_collection.h" |
| 14 #include "media/base/limits.h" | 16 #include "media/base/limits.h" |
| 15 #include "media/base/media_log.h" | 17 #include "media/base/media_log.h" |
| 16 #include "media/base/media_switches.h" | 18 #include "media/base/media_switches.h" |
| 17 #include "media/base/pipeline_impl.h" | 19 #include "media/base/pipeline_impl.h" |
| 18 #include "media/base/video_frame.h" | 20 #include "media/base/video_frame.h" |
| 19 #include "media/filters/adaptive_demuxer.h" | 21 #include "media/filters/adaptive_demuxer.h" |
| 20 #include "media/filters/chunk_demuxer_factory.h" | 22 #include "media/filters/chunk_demuxer_factory.h" |
| 21 #include "media/filters/ffmpeg_audio_decoder.h" | 23 #include "media/filters/ffmpeg_audio_decoder.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 return base::TimeDelta::FromMicroseconds(static_cast<int64>(integer)); | 81 return base::TimeDelta::FromMicroseconds(static_cast<int64>(integer)); |
| 80 } | 82 } |
| 81 | 83 |
| 82 } // namespace | 84 } // namespace |
| 83 | 85 |
| 84 namespace webkit_glue { | 86 namespace webkit_glue { |
| 85 | 87 |
| 86 WebMediaPlayerImpl::WebMediaPlayerImpl( | 88 WebMediaPlayerImpl::WebMediaPlayerImpl( |
| 87 WebKit::WebMediaPlayerClient* client, | 89 WebKit::WebMediaPlayerClient* client, |
| 88 media::FilterCollection* collection, | 90 media::FilterCollection* collection, |
| 91 media::AudioRendererSink::RenderCallback* audio_render_callback, |
| 89 media::MessageLoopFactory* message_loop_factory, | 92 media::MessageLoopFactory* message_loop_factory, |
| 90 MediaStreamClient* media_stream_client, | 93 MediaStreamClient* media_stream_client, |
| 91 media::MediaLog* media_log) | 94 media::MediaLog* media_log) |
| 92 : network_state_(WebKit::WebMediaPlayer::Empty), | 95 : audio_source_provider_(0), |
| 96 network_state_(WebKit::WebMediaPlayer::Empty), |
| 93 ready_state_(WebKit::WebMediaPlayer::HaveNothing), | 97 ready_state_(WebKit::WebMediaPlayer::HaveNothing), |
| 94 main_loop_(NULL), | 98 main_loop_(NULL), |
| 95 filter_collection_(collection), | 99 filter_collection_(collection), |
| 96 pipeline_(NULL), | 100 pipeline_(NULL), |
| 97 message_loop_factory_(message_loop_factory), | 101 message_loop_factory_(message_loop_factory), |
| 98 paused_(true), | 102 paused_(true), |
| 99 seeking_(false), | 103 seeking_(false), |
| 100 playback_rate_(0.0f), | 104 playback_rate_(0.0f), |
| 101 client_(client), | 105 client_(client), |
| 102 proxy_(NULL), | 106 proxy_(NULL), |
| 103 media_stream_client_(media_stream_client), | 107 media_stream_client_(media_stream_client), |
| 104 media_log_(media_log) { | 108 media_log_(media_log) { |
| 105 // Saves the current message loop. | 109 // Saves the current message loop. |
| 106 DCHECK(!main_loop_); | 110 DCHECK(!main_loop_); |
| 107 main_loop_ = MessageLoop::current(); | 111 main_loop_ = MessageLoop::current(); |
| 108 media_log_->AddEvent( | 112 media_log_->AddEvent( |
| 109 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); | 113 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
| 114 |
| 115 audio_render_callback_ = audio_render_callback; |
| 110 } | 116 } |
| 111 | 117 |
| 112 bool WebMediaPlayerImpl::Initialize( | 118 bool WebMediaPlayerImpl::Initialize( |
| 113 WebKit::WebFrame* frame, | 119 WebKit::WebFrame* frame, |
| 114 bool use_simple_data_source, | 120 bool use_simple_data_source, |
| 115 scoped_refptr<WebVideoRenderer> web_video_renderer) { | 121 scoped_refptr<WebVideoRenderer> web_video_renderer) { |
| 116 MessageLoop* pipeline_message_loop = | 122 MessageLoop* pipeline_message_loop = |
| 117 message_loop_factory_->GetMessageLoop("PipelineThread"); | 123 message_loop_factory_->GetMessageLoop("PipelineThread"); |
| 118 if (!pipeline_message_loop) { | 124 if (!pipeline_message_loop) { |
| 119 NOTREACHED() << "Could not start PipelineThread"; | 125 NOTREACHED() << "Could not start PipelineThread"; |
| (...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 proxy_ = NULL; | 811 proxy_ = NULL; |
| 806 } | 812 } |
| 807 } | 813 } |
| 808 | 814 |
| 809 WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() { | 815 WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() { |
| 810 DCHECK(MessageLoop::current() == main_loop_); | 816 DCHECK(MessageLoop::current() == main_loop_); |
| 811 DCHECK(client_); | 817 DCHECK(client_); |
| 812 return client_; | 818 return client_; |
| 813 } | 819 } |
| 814 | 820 |
| 821 WebKit::WebAudioSourceProvider* WebMediaPlayerImpl::audioSourceProvider() { |
| 822 if (!audio_render_callback_) |
| 823 return NULL; |
| 824 |
| 825 if (!audio_source_provider_) { |
| 826 // FIXME: should NOT call this in real-time audio thread... |
| 827 audio_source_provider_ = new RenderAudioSourceProvider(audio_render_callback
_); |
| 828 } |
| 829 |
| 830 return audio_source_provider_; |
| 831 } |
| 832 |
| 815 } // namespace webkit_glue | 833 } // namespace webkit_glue |
| OLD | NEW |