diff options
Diffstat (limited to 'chromium/media/remoting/courier_renderer.cc')
-rw-r--r-- | chromium/media/remoting/courier_renderer.cc | 120 |
1 files changed, 24 insertions, 96 deletions
diff --git a/chromium/media/remoting/courier_renderer.cc b/chromium/media/remoting/courier_renderer.cc index d820952f0ca..dfd4b8a1e2a 100644 --- a/chromium/media/remoting/courier_renderer.cc +++ b/chromium/media/remoting/courier_renderer.cc @@ -74,7 +74,6 @@ CourierRenderer::CourierRenderer( remote_renderer_handle_(RpcBroker::kInvalidHandle), video_renderer_sink_(video_renderer_sink), clock_(base::DefaultTickClock::GetInstance()) { - VLOG(2) << __func__; // Note: The constructor is running on the main thread, but will be destroyed // on the media thread. Therefore, all weak pointers must be dereferenced on // the media thread. @@ -85,7 +84,6 @@ CourierRenderer::CourierRenderer( } CourierRenderer::~CourierRenderer() { - VLOG(2) << __func__; DCHECK(media_task_runner_->BelongsToCurrentThread()); // Post task on main thread to unregister message receiver. @@ -102,7 +100,6 @@ CourierRenderer::~CourierRenderer() { void CourierRenderer::Initialize(MediaResource* media_resource, RendererClient* client, PipelineStatusCallback init_cb) { - VLOG(2) << __func__; DCHECK(media_task_runner_->BelongsToCurrentThread()); DCHECK(media_resource); DCHECK(client); @@ -150,19 +147,10 @@ void CourierRenderer::Initialize(MediaResource* media_resource, rpc_broker_))); } -void CourierRenderer::SetCdm(CdmContext* cdm_context, - CdmAttachedCB cdm_attached_cb) { - DCHECK(media_task_runner_->BelongsToCurrentThread()); - - // Media remoting doesn't support encrypted content. - NOTIMPLEMENTED(); -} - void CourierRenderer::SetLatencyHint( base::Optional<base::TimeDelta> latency_hint) {} void CourierRenderer::Flush(base::OnceClosure flush_cb) { - VLOG(2) << __func__; DCHECK(media_task_runner_->BelongsToCurrentThread()); DCHECK(!flush_cb_); @@ -188,14 +176,13 @@ void CourierRenderer::Flush(base::OnceClosure flush_cb) { (video_demuxer_stream_adapter_ && !flush_video_count.has_value()) || (audio_demuxer_stream_adapter_ && video_demuxer_stream_adapter_ && flush_audio_count.has_value() != flush_video_count.has_value())) { - VLOG(1) << "Ignoring flush request while under flushing operation"; return; } flush_cb_ = std::move(flush_cb); // Issues RPC_R_FLUSHUNTIL RPC message. - std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage()); + auto rpc = std::make_unique<pb::RpcMessage>(); rpc->set_handle(remote_renderer_handle_); rpc->set_proc(pb::RpcMessage::RPC_R_FLUSHUNTIL); pb::RendererFlushUntil* message = rpc->mutable_renderer_flushuntil_rpc(); @@ -204,15 +191,10 @@ void CourierRenderer::Flush(base::OnceClosure flush_cb) { if (flush_video_count.has_value()) message->set_video_count(*flush_video_count); message->set_callback_handle(rpc_handle_); - VLOG(2) << __func__ << ": Sending RPC_R_FLUSHUNTIL to " << rpc->handle() - << " with audio_count=" << message->audio_count() - << ", video_count=" << message->video_count() - << ", callback_handle=" << message->callback_handle(); SendRpcToRemote(std::move(rpc)); } void CourierRenderer::StartPlayingFrom(base::TimeDelta time) { - VLOG(2) << __func__ << ": " << time.InMicroseconds(); DCHECK(media_task_runner_->BelongsToCurrentThread()); if (state_ != STATE_PLAYING) { @@ -221,12 +203,10 @@ void CourierRenderer::StartPlayingFrom(base::TimeDelta time) { } // Issues RPC_R_STARTPLAYINGFROM RPC message. - std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage()); + auto rpc = std::make_unique<pb::RpcMessage>(); rpc->set_handle(remote_renderer_handle_); rpc->set_proc(pb::RpcMessage::RPC_R_STARTPLAYINGFROM); rpc->set_integer64_value(time.InMicroseconds()); - VLOG(2) << __func__ << ": Sending RPC_R_STARTPLAYINGFROM to " << rpc->handle() - << " with time_usec=" << rpc->integer64_value(); SendRpcToRemote(std::move(rpc)); { @@ -237,7 +217,6 @@ void CourierRenderer::StartPlayingFrom(base::TimeDelta time) { } void CourierRenderer::SetPlaybackRate(double playback_rate) { - VLOG(2) << __func__ << ": " << playback_rate; DCHECK(media_task_runner_->BelongsToCurrentThread()); if (state_ != STATE_FLUSHING && state_ != STATE_PLAYING) { @@ -246,19 +225,16 @@ void CourierRenderer::SetPlaybackRate(double playback_rate) { } // Issues RPC_R_SETPLAYBACKRATE RPC message. - std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage()); + auto rpc = std::make_unique<pb::RpcMessage>(); rpc->set_handle(remote_renderer_handle_); rpc->set_proc(pb::RpcMessage::RPC_R_SETPLAYBACKRATE); rpc->set_double_value(playback_rate); - VLOG(2) << __func__ << ": Sending RPC_R_SETPLAYBACKRATE to " << rpc->handle() - << " with rate=" << rpc->double_value(); SendRpcToRemote(std::move(rpc)); playback_rate_ = playback_rate; ResetMeasurements(); } void CourierRenderer::SetVolume(float volume) { - VLOG(2) << __func__ << ": " << volume; DCHECK(media_task_runner_->BelongsToCurrentThread()); if (state_ != STATE_FLUSHING && state_ != STATE_PLAYING) { @@ -267,12 +243,10 @@ void CourierRenderer::SetVolume(float volume) { } // Issues RPC_R_SETVOLUME RPC message. - std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage()); + auto rpc = std::make_unique<pb::RpcMessage>(); rpc->set_handle(remote_renderer_handle_); rpc->set_proc(pb::RpcMessage::RPC_R_SETVOLUME); rpc->set_double_value(volume); - VLOG(2) << __func__ << ": Sending RPC_R_SETVOLUME to " << rpc->handle() - << " with volume=" << rpc->double_value(); SendRpcToRemote(std::move(rpc)); } @@ -314,7 +288,6 @@ void CourierRenderer::OnDataPipeCreated( mojo::ScopedDataPipeProducerHandle video_handle, int audio_rpc_handle, int video_rpc_handle) { - VLOG(2) << __func__; DCHECK(media_task_runner_->BelongsToCurrentThread()); if (state_ == STATE_ERROR) @@ -332,7 +305,6 @@ void CourierRenderer::OnDataPipeCreated( // Create audio demuxer stream adapter if audio is available. if (audio_demuxer_stream && audio.is_valid() && audio_handle.is_valid() && audio_rpc_handle != RpcBroker::kInvalidHandle) { - VLOG(2) << "Initialize audio"; audio_demuxer_stream_adapter_.reset(new DemuxerStreamAdapter( main_task_runner_, media_task_runner_, "audio", audio_demuxer_stream, rpc_broker_, audio_rpc_handle, std::move(audio), @@ -344,7 +316,6 @@ void CourierRenderer::OnDataPipeCreated( // Create video demuxer stream adapter if video is available. if (video_demuxer_stream && video.is_valid() && video_handle.is_valid() && video_rpc_handle != RpcBroker::kInvalidHandle) { - VLOG(2) << "Initialize video"; video_demuxer_stream_adapter_.reset(new DemuxerStreamAdapter( main_task_runner_, media_task_runner_, "video", video_demuxer_stream, rpc_broker_, video_rpc_handle, std::move(video), @@ -360,13 +331,27 @@ void CourierRenderer::OnDataPipeCreated( } state_ = STATE_ACQUIRING; + + // Issues RPC_ACQUIRE_DEMUXER RPC message. + auto rpc = std::make_unique<pb::RpcMessage>(); + rpc->set_handle(RpcBroker::kAcquireDemuxerHandle); + rpc->set_proc(pb::RpcMessage::RPC_ACQUIRE_DEMUXER); + pb::AcquireDemuxer* message = rpc->mutable_acquire_demuxer_rpc(); + message->set_audio_demuxer_handle( + audio_demuxer_stream_adapter_ + ? audio_demuxer_stream_adapter_->rpc_handle() + : RpcBroker::kInvalidHandle); + message->set_video_demuxer_handle( + video_demuxer_stream_adapter_ + ? video_demuxer_stream_adapter_->rpc_handle() + : RpcBroker::kInvalidHandle); + SendRpcToRemote(std::move(rpc)); + // Issues RPC_ACQUIRE_RENDERER RPC message. - std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage()); - rpc->set_handle(RpcBroker::kAcquireHandle); + rpc = std::make_unique<pb::RpcMessage>(); + rpc->set_handle(RpcBroker::kAcquireRendererHandle); rpc->set_proc(pb::RpcMessage::RPC_ACQUIRE_RENDERER); rpc->set_integer_value(rpc_handle_); - VLOG(2) << __func__ << ": Sending RPC_ACQUIRE_RENDERER to " << rpc->handle() - << " with rpc_handle=" << rpc->integer_value(); SendRpcToRemote(std::move(rpc)); } @@ -403,11 +388,9 @@ void CourierRenderer::OnReceivedRpc(std::unique_ptr<pb::RpcMessage> message) { OnBufferingStateChange(std::move(message)); break; case pb::RpcMessage::RPC_RC_ONENDED: - VLOG(2) << __func__ << ": Received RPC_RC_ONENDED."; client_->OnEnded(); break; case pb::RpcMessage::RPC_RC_ONERROR: - VLOG(2) << __func__ << ": Received RPC_RC_ONERROR."; OnFatalError(RECEIVER_PIPELINE_ERROR); break; case pb::RpcMessage::RPC_RC_ONAUDIOCONFIGCHANGE: @@ -426,12 +409,11 @@ void CourierRenderer::OnReceivedRpc(std::unique_ptr<pb::RpcMessage> message) { OnStatisticsUpdate(std::move(message)); break; case pb::RpcMessage::RPC_RC_ONWAITINGFORDECRYPTIONKEY: - VLOG(2) << __func__ << ": Received RPC_RC_ONWAITINGFORDECRYPTIONKEY."; client_->OnWaiting(WaitingReason::kNoDecryptionKey); break; default: - VLOG(1) << "Unknown RPC: " << message->proc(); + DVLOG(1) << "Unknown RPC: " << message->proc(); } } @@ -449,19 +431,15 @@ void CourierRenderer::AcquireRendererDone( DCHECK(message); remote_renderer_handle_ = message->integer_value(); - VLOG(2) << __func__ - << ": Received RPC_ACQUIRE_RENDERER_DONE with remote_renderer_handle=" - << remote_renderer_handle_; if (state_ != STATE_ACQUIRING || init_workflow_done_callback_.is_null()) { - LOG(WARNING) << "Unexpected acquire renderer done RPC."; OnFatalError(PEERS_OUT_OF_SYNC); return; } state_ = STATE_INITIALIZING; // Issues RPC_R_INITIALIZE RPC message to initialize renderer. - std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage()); + auto rpc = std::make_unique<pb::RpcMessage>(); rpc->set_handle(remote_renderer_handle_); rpc->set_proc(pb::RpcMessage::RPC_R_INITIALIZE); pb::RendererInitialize* init = rpc->mutable_renderer_initialize_rpc(); @@ -475,11 +453,6 @@ void CourierRenderer::AcquireRendererDone( ? video_demuxer_stream_adapter_->rpc_handle() : RpcBroker::kInvalidHandle); init->set_callback_handle(rpc_handle_); - VLOG(2) << __func__ << ": Sending RPC_R_INITIALIZE to " << rpc->handle() - << " with client_handle=" << init->client_handle() - << ", audio_demuxer_handle=" << init->audio_demuxer_handle() - << ", video_demuxer_handle=" << init->video_demuxer_handle() - << ", callback_handle=" << init->callback_handle(); SendRpcToRemote(std::move(rpc)); } @@ -489,11 +462,7 @@ void CourierRenderer::InitializeCallback( DCHECK(message); const bool success = message->boolean_value(); - VLOG(2) << __func__ - << ": Received RPC_R_INITIALIZE_CALLBACK with success=" << success; - if (state_ != STATE_INITIALIZING || init_workflow_done_callback_.is_null()) { - LOG(WARNING) << "Unexpected initialize callback RPC."; OnFatalError(PEERS_OUT_OF_SYNC); return; } @@ -511,10 +480,8 @@ void CourierRenderer::InitializeCallback( void CourierRenderer::FlushUntilCallback() { DCHECK(media_task_runner_->BelongsToCurrentThread()); - VLOG(2) << __func__ << ": Received RPC_R_FLUSHUNTIL_CALLBACK"; if (state_ != STATE_FLUSHING || !flush_cb_) { - LOG(WARNING) << "Unexpected flushuntil callback RPC."; OnFatalError(PEERS_OUT_OF_SYNC); return; } @@ -531,9 +498,6 @@ void CourierRenderer::FlushUntilCallback() { void CourierRenderer::SetCdmCallback(std::unique_ptr<pb::RpcMessage> message) { DCHECK(media_task_runner_->BelongsToCurrentThread()); DCHECK(message); - VLOG(2) << __func__ << ": Received RPC_R_SETCDM_CALLBACK with cdm_id=" - << message->renderer_set_cdm_rpc().cdm_id() << ", callback_handle=" - << message->renderer_set_cdm_rpc().callback_handle(); // TODO(erickung): add implementation once Remote CDM implementation is done. NOTIMPLEMENTED(); } @@ -543,7 +507,6 @@ void CourierRenderer::OnTimeUpdate(std::unique_ptr<pb::RpcMessage> message) { DCHECK(message); // Shutdown remoting session if receiving malformed RPC message. if (!message->has_rendererclient_ontimeupdate_rpc()) { - VLOG(1) << __func__ << " missing required RPC message"; OnFatalError(RPC_INVALID); return; } @@ -551,9 +514,6 @@ void CourierRenderer::OnTimeUpdate(std::unique_ptr<pb::RpcMessage> message) { message->rendererclient_ontimeupdate_rpc().time_usec(); const int64_t max_time_usec = message->rendererclient_ontimeupdate_rpc().max_time_usec(); - VLOG(2) << __func__ - << ": Received RPC_RC_ONTIMEUPDATE with time_usec=" << time_usec - << ", max_time_usec=" << max_time_usec; // Ignores invalid time, such as negative value, or time larger than max value // (usually the time stamp that all streams are pushed into AV pipeline). if (time_usec < 0 || max_time_usec < 0 || time_usec > max_time_usec) @@ -575,12 +535,9 @@ void CourierRenderer::OnBufferingStateChange( DCHECK(media_task_runner_->BelongsToCurrentThread()); DCHECK(message); if (!message->has_rendererclient_onbufferingstatechange_rpc()) { - VLOG(1) << __func__ << " missing required RPC message"; OnFatalError(RPC_INVALID); return; } - VLOG(2) << __func__ << ": Received RPC_RC_ONBUFFERINGSTATECHANGE with state=" - << message->rendererclient_onbufferingstatechange_rpc().state(); base::Optional<BufferingState> state = ToMediaBufferingState( message->rendererclient_onbufferingstatechange_rpc().state()); BufferingStateChangeReason reason = BUFFERING_CHANGE_REASON_UNKNOWN; @@ -605,7 +562,6 @@ void CourierRenderer::OnAudioConfigChange( DCHECK(message); // Shutdown remoting session if receiving malformed RPC message. if (!message->has_rendererclient_onaudioconfigchange_rpc()) { - VLOG(1) << __func__ << " missing required RPC message"; OnFatalError(RPC_INVALID); return; } @@ -618,8 +574,6 @@ void CourierRenderer::OnAudioConfigChange( ConvertProtoToAudioDecoderConfig(pb_audio_config, &out_audio_config); DCHECK(out_audio_config.IsValidConfig()); - VLOG(2) << __func__ << ": Received RPC_RC_ONAUDIOCONFIGCHANGE with config:" - << out_audio_config.AsHumanReadableString(); client_->OnAudioConfigChange(out_audio_config); } @@ -629,7 +583,6 @@ void CourierRenderer::OnVideoConfigChange( DCHECK(message); // Shutdown remoting session if receiving malformed RPC message. if (!message->has_rendererclient_onvideoconfigchange_rpc()) { - VLOG(1) << __func__ << " missing required RPC message"; OnFatalError(RPC_INVALID); return; } @@ -642,8 +595,6 @@ void CourierRenderer::OnVideoConfigChange( ConvertProtoToVideoDecoderConfig(pb_video_config, &out_video_config); DCHECK(out_video_config.IsValidConfig()); - VLOG(2) << __func__ << ": Received RPC_RC_ONVIDEOCONFIGCHANGE with config:" - << out_video_config.AsHumanReadableString(); client_->OnVideoConfigChange(out_video_config); } @@ -653,14 +604,11 @@ void CourierRenderer::OnVideoNaturalSizeChange( DCHECK(message); // Shutdown remoting session if receiving malformed RPC message. if (!message->has_rendererclient_onvideonatualsizechange_rpc()) { - VLOG(1) << __func__ << " missing required RPC message"; OnFatalError(RPC_INVALID); return; } const auto& size_change = message->rendererclient_onvideonatualsizechange_rpc(); - VLOG(2) << __func__ << ": Received RPC_RC_ONVIDEONATURALSIZECHANGE with size=" - << size_change.width() << 'x' << size_change.height(); if (size_change.width() <= 0 || size_change.height() <= 0) return; client_->OnVideoNaturalSizeChange( @@ -672,8 +620,6 @@ void CourierRenderer::OnVideoOpacityChange( DCHECK(media_task_runner_->BelongsToCurrentThread()); DCHECK(message); const bool opaque = message->boolean_value(); - VLOG(2) << __func__ - << ": Received RPC_RC_ONVIDEOOPACITYCHANGE with opaque=" << opaque; client_->OnVideoOpacityChange(opaque); } @@ -683,7 +629,6 @@ void CourierRenderer::OnStatisticsUpdate( DCHECK(message); // Shutdown remoting session if receiving malformed RPC message. if (!message->has_rendererclient_onstatisticsupdate_rpc()) { - VLOG(1) << __func__ << " missing required RPC message"; OnFatalError(RPC_INVALID); return; } @@ -691,15 +636,6 @@ void CourierRenderer::OnStatisticsUpdate( ConvertProtoToPipelineStatistics( message->rendererclient_onstatisticsupdate_rpc(), &stats); // Note: Each field in |stats| is a delta, not the aggregate amount. - VLOG(2) << __func__ - << ": Received RPC_RC_ONSTATISTICSUPDATE with audio_bytes_decoded=" - << stats.audio_bytes_decoded - << ", video_bytes_decoded=" << stats.video_bytes_decoded - << ", video_frames_decoded=" << stats.video_frames_decoded - << ", video_frames_dropped=" << stats.video_frames_dropped - << ", audio_memory_usage=" << stats.audio_memory_usage - << ", video_memory_usage=" << stats.video_memory_usage; - if (stats.audio_bytes_decoded > 0 || stats.video_frames_decoded > 0 || stats.video_frames_dropped > 0) { metrics_recorder_.OnEvidenceOfPlayoutAtReceiver(); @@ -712,8 +648,6 @@ void CourierRenderer::OnFatalError(StopTrigger stop_trigger) { DCHECK(media_task_runner_->BelongsToCurrentThread()); DCHECK_NE(UNKNOWN_STOP_TRIGGER, stop_trigger); - VLOG(2) << __func__ << " with StopTrigger " << stop_trigger; - // If this is the first error, notify the controller. It is expected the // controller will cause this renderer to shut down shortly. if (state_ != STATE_ERROR) { @@ -761,9 +695,6 @@ void CourierRenderer::OnMediaTimeUpdated() { playback_rate_; if ((media_duration - update_duration).magnitude() >= kMediaPlaybackDelayThreshold) { - VLOG(1) << "Irregular playback detected: Media playback delayed." - << " media_duration = " << media_duration - << " update_duration = " << update_duration; ++times_playback_delayed_; if (times_playback_delayed_ == kPlaybackDelayCountThreshold) OnFatalError(PACING_TOO_SLOWLY); @@ -807,9 +738,6 @@ void CourierRenderer::UpdateVideoStatsQueue(int video_frames_decoded, if (sum_video_frames_decoded_ && sum_video_frames_dropped_ * 100 > sum_video_frames_decoded_ * kMaxNumVideoFramesDroppedPercentage) { - VLOG(1) << "Irregular playback detected: Too many video frames dropped." - << " video_frames_decoded= " << sum_video_frames_decoded_ - << " video_frames_dropped= " << sum_video_frames_dropped_; OnFatalError(FRAME_DROP_RATE_HIGH); } // Prune |video_stats_queue_|. |