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

Side by Side Diff: webkit/renderer/media/webmediaplayer_impl.cc

Issue 15872004: Disable preroll duration increase on underflow for MediaSource playback. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Address CR comments Created 7 years, 6 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 unified diff | Download patch
« no previous file with comments | « media/tools/player_x11/player_x11.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/renderer/media/webmediaplayer_impl.h" 5 #include "webkit/renderer/media/webmediaplayer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 else if (is_downloading && network_state_ == WebMediaPlayer::NetworkStateIdle) 1043 else if (is_downloading && network_state_ == WebMediaPlayer::NetworkStateIdle)
1044 SetNetworkState(WebMediaPlayer::NetworkStateLoading); 1044 SetNetworkState(WebMediaPlayer::NetworkStateLoading);
1045 media_log_->AddEvent( 1045 media_log_->AddEvent(
1046 media_log_->CreateBooleanEvent( 1046 media_log_->CreateBooleanEvent(
1047 media::MediaLogEvent::NETWORK_ACTIVITY_SET, 1047 media::MediaLogEvent::NETWORK_ACTIVITY_SET,
1048 "is_downloading_data", is_downloading)); 1048 "is_downloading_data", is_downloading));
1049 } 1049 }
1050 1050
1051 void WebMediaPlayerImpl::StartPipeline(WebKit::WebMediaSource* media_source) { 1051 void WebMediaPlayerImpl::StartPipeline(WebKit::WebMediaSource* media_source) {
1052 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 1052 const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
1053 1053 bool increase_preroll_on_underflow = true;
1054 1054
1055 // Figure out which demuxer to use. 1055 // Figure out which demuxer to use.
1056 if (!media_source) { 1056 if (!media_source) {
1057 DCHECK(!chunk_demuxer_); 1057 DCHECK(!chunk_demuxer_);
1058 DCHECK(data_source_); 1058 DCHECK(data_source_);
1059 1059
1060 demuxer_.reset(new media::FFmpegDemuxer( 1060 demuxer_.reset(new media::FFmpegDemuxer(
1061 media_thread_.message_loop_proxy(), data_source_.get(), 1061 media_thread_.message_loop_proxy(), data_source_.get(),
1062 BIND_TO_RENDER_LOOP_2(&WebMediaPlayerImpl::OnNeedKey, "", ""))); 1062 BIND_TO_RENDER_LOOP_2(&WebMediaPlayerImpl::OnNeedKey, "", "")));
1063 } else { 1063 } else {
1064 DCHECK(!chunk_demuxer_); 1064 DCHECK(!chunk_demuxer_);
1065 DCHECK(!data_source_); 1065 DCHECK(!data_source_);
1066 1066
1067 scoped_ptr<WebKit::WebMediaSource> ms(media_source); 1067 scoped_ptr<WebKit::WebMediaSource> ms(media_source);
1068 chunk_demuxer_ = new media::ChunkDemuxer( 1068 chunk_demuxer_ = new media::ChunkDemuxer(
1069 BIND_TO_RENDER_LOOP_1(&WebMediaPlayerImpl::OnDemuxerOpened, 1069 BIND_TO_RENDER_LOOP_1(&WebMediaPlayerImpl::OnDemuxerOpened,
1070 base::Passed(&ms)), 1070 base::Passed(&ms)),
1071 BIND_TO_RENDER_LOOP_2(&WebMediaPlayerImpl::OnNeedKey, "", ""), 1071 BIND_TO_RENDER_LOOP_2(&WebMediaPlayerImpl::OnNeedKey, "", ""),
1072 base::Bind(&WebMediaPlayerImpl::OnTextTrack, base::Unretained(this)), 1072 base::Bind(&WebMediaPlayerImpl::OnTextTrack, base::Unretained(this)),
1073 base::Bind(&LogMediaSourceError, media_log_)); 1073 base::Bind(&LogMediaSourceError, media_log_));
1074 demuxer_.reset(chunk_demuxer_); 1074 demuxer_.reset(chunk_demuxer_);
1075 1075
1076 // Disable GpuVideoDecoder creation until it supports codec config changes. 1076 // Disable GpuVideoDecoder creation until it supports codec config changes.
1077 // TODO(acolwell): Remove this once http://crbug.com/151045 is fixed. 1077 // TODO(acolwell): Remove this once http://crbug.com/151045 is fixed.
1078 gpu_factories_ = NULL; 1078 gpu_factories_ = NULL;
1079
1080 // Disable preroll increases on underflow since the web application has no
1081 // way to detect that this is happening and runs the risk of triggering
1082 // unwanted garbage collection if it is to aggressive about appending data.
1083 // TODO(acolwell): Remove this once http://crbug.com/144683 is fixed.
1084 increase_preroll_on_underflow = false;
1079 } 1085 }
1080 1086
1081 scoped_ptr<media::FilterCollection> filter_collection( 1087 scoped_ptr<media::FilterCollection> filter_collection(
1082 new media::FilterCollection()); 1088 new media::FilterCollection());
1083 filter_collection->SetDemuxer(demuxer_.get()); 1089 filter_collection->SetDemuxer(demuxer_.get());
1084 1090
1085 // Figure out if EME is enabled. 1091 // Figure out if EME is enabled.
1086 media::SetDecryptorReadyCB set_decryptor_ready_cb; 1092 media::SetDecryptorReadyCB set_decryptor_ready_cb;
1087 if (decryptor_) { 1093 if (decryptor_) {
1088 set_decryptor_ready_cb = base::Bind(&ProxyDecryptor::SetDecryptorReadyCB, 1094 set_decryptor_ready_cb = base::Bind(&ProxyDecryptor::SetDecryptorReadyCB,
1089 base::Unretained(decryptor_.get())); 1095 base::Unretained(decryptor_.get()));
1090 } 1096 }
1091 1097
1092 // Create our audio decoders and renderer. 1098 // Create our audio decoders and renderer.
1093 ScopedVector<media::AudioDecoder> audio_decoders; 1099 ScopedVector<media::AudioDecoder> audio_decoders;
1094 audio_decoders.push_back(new media::FFmpegAudioDecoder( 1100 audio_decoders.push_back(new media::FFmpegAudioDecoder(
1095 media_thread_.message_loop_proxy())); 1101 media_thread_.message_loop_proxy()));
1096 if (cmd_line->HasSwitch(switches::kEnableOpusPlayback)) { 1102 if (cmd_line->HasSwitch(switches::kEnableOpusPlayback)) {
1097 audio_decoders.push_back(new media::OpusAudioDecoder( 1103 audio_decoders.push_back(new media::OpusAudioDecoder(
1098 media_thread_.message_loop_proxy())); 1104 media_thread_.message_loop_proxy()));
1099 } 1105 }
1100 1106
1101 scoped_ptr<media::AudioRenderer> audio_renderer( 1107 scoped_ptr<media::AudioRenderer> audio_renderer(
1102 new media::AudioRendererImpl(media_thread_.message_loop_proxy(), 1108 new media::AudioRendererImpl(media_thread_.message_loop_proxy(),
1103 audio_source_provider_.get(), 1109 audio_source_provider_.get(),
1104 audio_decoders.Pass(), 1110 audio_decoders.Pass(),
1105 set_decryptor_ready_cb)); 1111 set_decryptor_ready_cb,
1112 increase_preroll_on_underflow));
1106 filter_collection->SetAudioRenderer(audio_renderer.Pass()); 1113 filter_collection->SetAudioRenderer(audio_renderer.Pass());
1107 1114
1108 // Create our video decoders and renderer. 1115 // Create our video decoders and renderer.
1109 ScopedVector<media::VideoDecoder> video_decoders; 1116 ScopedVector<media::VideoDecoder> video_decoders;
1110 1117
1111 if (gpu_factories_.get()) { 1118 if (gpu_factories_.get()) {
1112 video_decoders.push_back(new media::GpuVideoDecoder( 1119 video_decoders.push_back(new media::GpuVideoDecoder(
1113 media_thread_.message_loop_proxy(), gpu_factories_)); 1120 media_thread_.message_loop_proxy(), gpu_factories_));
1114 } 1121 }
1115 1122
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 1261
1255 if (pending_repaint_) 1262 if (pending_repaint_)
1256 return; 1263 return;
1257 1264
1258 pending_repaint_ = true; 1265 pending_repaint_ = true;
1259 main_loop_->PostTask(FROM_HERE, base::Bind( 1266 main_loop_->PostTask(FROM_HERE, base::Bind(
1260 &WebMediaPlayerImpl::Repaint, AsWeakPtr())); 1267 &WebMediaPlayerImpl::Repaint, AsWeakPtr()));
1261 } 1268 }
1262 1269
1263 } // namespace webkit_media 1270 } // namespace webkit_media
OLDNEW
« no previous file with comments | « media/tools/player_x11/player_x11.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698