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" |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 paused_(true), | 331 paused_(true), |
332 seeking_(false), | 332 seeking_(false), |
333 playback_rate_(0.0f), | 333 playback_rate_(0.0f), |
334 client_(client), | 334 client_(client), |
335 proxy_(NULL), | 335 proxy_(NULL), |
336 media_stream_client_(media_stream_client), | 336 media_stream_client_(media_stream_client), |
337 media_log_(media_log) { | 337 media_log_(media_log) { |
338 // Saves the current message loop. | 338 // Saves the current message loop. |
339 DCHECK(!main_loop_); | 339 DCHECK(!main_loop_); |
340 main_loop_ = MessageLoop::current(); | 340 main_loop_ = MessageLoop::current(); |
341 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::CREATING)); | 341 media_log_->AddEvent( |
| 342 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
342 } | 343 } |
343 | 344 |
344 bool WebMediaPlayerImpl::Initialize( | 345 bool WebMediaPlayerImpl::Initialize( |
345 WebKit::WebFrame* frame, | 346 WebKit::WebFrame* frame, |
346 bool use_simple_data_source, | 347 bool use_simple_data_source, |
347 scoped_refptr<WebVideoRenderer> web_video_renderer) { | 348 scoped_refptr<WebVideoRenderer> web_video_renderer) { |
348 MessageLoop* pipeline_message_loop = | 349 MessageLoop* pipeline_message_loop = |
349 message_loop_factory_->GetMessageLoop("PipelineThread"); | 350 message_loop_factory_->GetMessageLoop("PipelineThread"); |
350 if (!pipeline_message_loop) { | 351 if (!pipeline_message_loop) { |
351 NOTREACHED() << "Could not start PipelineThread"; | 352 NOTREACHED() << "Could not start PipelineThread"; |
352 return false; | 353 return false; |
353 } | 354 } |
354 | 355 |
355 pipeline_ = new media::PipelineImpl(pipeline_message_loop); | 356 pipeline_ = new media::PipelineImpl(pipeline_message_loop, media_log_); |
356 | 357 |
357 // Also we want to be notified of |main_loop_| destruction. | 358 // Also we want to be notified of |main_loop_| destruction. |
358 main_loop_->AddDestructionObserver(this); | 359 main_loop_->AddDestructionObserver(this); |
359 | 360 |
360 // Creates the proxy. | 361 // Creates the proxy. |
361 proxy_ = new Proxy(main_loop_, this); | 362 proxy_ = new Proxy(main_loop_, this); |
362 web_video_renderer->SetWebMediaPlayerImplProxy(proxy_); | 363 web_video_renderer->SetWebMediaPlayerImplProxy(proxy_); |
363 proxy_->SetVideoRenderer(web_video_renderer); | 364 proxy_->SetVideoRenderer(web_video_renderer); |
364 | 365 |
365 // Set our pipeline callbacks. | 366 // Set our pipeline callbacks. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 filter_collection_->AddAudioDecoder(new media::FFmpegAudioDecoder( | 421 filter_collection_->AddAudioDecoder(new media::FFmpegAudioDecoder( |
421 message_loop_factory_->GetMessageLoop("AudioDecoderThread"))); | 422 message_loop_factory_->GetMessageLoop("AudioDecoderThread"))); |
422 filter_collection_->AddVideoDecoder(new media::FFmpegVideoDecoder( | 423 filter_collection_->AddVideoDecoder(new media::FFmpegVideoDecoder( |
423 message_loop_factory_->GetMessageLoop("VideoDecoderThread"), NULL)); | 424 message_loop_factory_->GetMessageLoop("VideoDecoderThread"), NULL)); |
424 filter_collection_->AddAudioRenderer(new media::NullAudioRenderer()); | 425 filter_collection_->AddAudioRenderer(new media::NullAudioRenderer()); |
425 | 426 |
426 return true; | 427 return true; |
427 } | 428 } |
428 | 429 |
429 WebMediaPlayerImpl::~WebMediaPlayerImpl() { | 430 WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
| 431 Destroy(); |
430 media_log_->AddEvent( | 432 media_log_->AddEvent( |
431 media_log_->CreateEvent(media::MediaLogEvent::DESTROYING)); | 433 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); |
432 Destroy(); | |
433 | 434 |
434 // Finally tell the |main_loop_| we don't want to be notified of destruction | 435 // Finally tell the |main_loop_| we don't want to be notified of destruction |
435 // event. | 436 // event. |
436 if (main_loop_) { | 437 if (main_loop_) { |
437 main_loop_->RemoveDestructionObserver(this); | 438 main_loop_->RemoveDestructionObserver(this); |
438 } | 439 } |
439 } | 440 } |
440 | 441 |
441 void WebMediaPlayerImpl::load(const WebKit::WebURL& url) { | 442 void WebMediaPlayerImpl::load(const WebKit::WebURL& url) { |
442 DCHECK(MessageLoop::current() == main_loop_); | 443 DCHECK(MessageLoop::current() == main_loop_); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 // cause extra pre-rolling and will break servers without range request | 512 // cause extra pre-rolling and will break servers without range request |
512 // support. | 513 // support. |
513 // | 514 // |
514 // We still have to notify WebKit that time has changed otherwise | 515 // We still have to notify WebKit that time has changed otherwise |
515 // HTMLMediaElement gets into an inconsistent state. | 516 // HTMLMediaElement gets into an inconsistent state. |
516 if (pipeline_->GetCurrentTime().ToInternalValue() == 0 && seconds == 0) { | 517 if (pipeline_->GetCurrentTime().ToInternalValue() == 0 && seconds == 0) { |
517 GetClient()->timeChanged(); | 518 GetClient()->timeChanged(); |
518 return; | 519 return; |
519 } | 520 } |
520 | 521 |
| 522 media_log_->AddEvent(media_log_->CreateSeekEvent(seconds)); |
| 523 |
521 base::TimeDelta seek_time = ConvertSecondsToTimestamp(seconds); | 524 base::TimeDelta seek_time = ConvertSecondsToTimestamp(seconds); |
522 | 525 |
523 // Update our paused time. | 526 // Update our paused time. |
524 if (paused_) { | 527 if (paused_) { |
525 paused_time_ = seek_time; | 528 paused_time_ = seek_time; |
526 } | 529 } |
527 | 530 |
528 seeking_ = true; | 531 seeking_ = true; |
529 | 532 |
530 proxy_->DemuxerFlush(); | 533 proxy_->DemuxerFlush(); |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1046 } | 1049 } |
1047 } | 1050 } |
1048 | 1051 |
1049 WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() { | 1052 WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() { |
1050 DCHECK(MessageLoop::current() == main_loop_); | 1053 DCHECK(MessageLoop::current() == main_loop_); |
1051 DCHECK(client_); | 1054 DCHECK(client_); |
1052 return client_; | 1055 return client_; |
1053 } | 1056 } |
1054 | 1057 |
1055 } // namespace webkit_glue | 1058 } // namespace webkit_glue |
OLD | NEW |