Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(85)

Unified Diff: webkit/media/webmediaplayer_ms.cc

Issue 11198055: Fix media stream playback event as media element. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fire events after first frame is avaialbe Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/media/webmediaplayer_ms.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/media/webmediaplayer_ms.cc
===================================================================
--- webkit/media/webmediaplayer_ms.cc (revision 163197)
+++ webkit/media/webmediaplayer_ms.cc (working copy)
@@ -45,10 +45,10 @@
client_(client),
delegate_(delegate),
media_stream_client_(media_stream_client),
- video_frame_provider_started_(false),
paused_(true),
pending_repaint_(false),
- got_first_frame_(false),
+ received_first_frame_(false),
+ sequence_started_(false),
total_frame_count_(0),
dropped_frame_count_(0),
media_log_(media_log) {
@@ -92,9 +92,7 @@
SetNetworkState(WebMediaPlayer::NetworkStateLoaded);
GetClient()->sourceOpened();
GetClient()->setOpaque(true);
- SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
- SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
- RepaintInternal();
+ video_frame_provider_->Start();
} else {
SetNetworkState(WebMediaPlayer::NetworkStateNetworkError);
}
@@ -108,15 +106,11 @@
DVLOG(1) << "WebMediaPlayerMS::play";
DCHECK(thread_checker_.CalledOnValidThread());
+ if (video_frame_provider_ && paused_) {
+ video_frame_provider_->Play();
+ }
paused_ = false;
- if (video_frame_provider_) {
- if (video_frame_provider_started_) {
- video_frame_provider_->Play();
- } else {
- video_frame_provider_started_ = true;
- video_frame_provider_->Start();
- }
- }
+
// TODO(wjia): add audio. See crbug.com/142988.
media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PLAY));
@@ -346,8 +340,20 @@
DVLOG(3) << "WebMediaPlayerMS::OnFrameAvailable";
DCHECK(thread_checker_.CalledOnValidThread());
++total_frame_count_;
- if (!got_first_frame_) {
- got_first_frame_ = true;
+ if (!received_first_frame_) {
+ received_first_frame_ = true;
+ current_frame_ = media::VideoFrame::CreateBlackFrame(frame->natural_size());
+ SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata);
+ SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData);
+ GetClient()->sizeChanged();
+ }
+
+ // Do not update |current_frame_| when paused.
+ if (paused_)
+ return;
+
+ if (!sequence_started_) {
+ sequence_started_ = true;
start_time_ = frame->GetTimestamp();
scherkus (not reviewing) 2012/10/22 17:40:05 when we play, then pause, then play again won't ti
}
bool size_changed = !current_frame_ ||
« no previous file with comments | « webkit/media/webmediaplayer_ms.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698