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

Unified Diff: media/remoting/receiver.cc

Issue 2804183002: Revert of Media Remoting: End to end integration tests. (Closed)
Patch Set: Created 3 years, 8 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 | « media/remoting/receiver.h ('k') | media/remoting/stream_provider.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/remoting/receiver.cc
diff --git a/media/remoting/receiver.cc b/media/remoting/receiver.cc
deleted file mode 100644
index 90dd78b2791bd045dfc9653347043a24605503b2..0000000000000000000000000000000000000000
--- a/media/remoting/receiver.cc
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "media/remoting/receiver.h"
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "media/base/decoder_buffer.h"
-#include "media/base/renderer.h"
-#include "media/remoting/proto_enum_utils.h"
-#include "media/remoting/stream_provider.h"
-
-namespace media {
-namespace remoting {
-namespace {
-
-// The period to send the TimeUpdate RPC message to update the media time on
-// sender side.
-constexpr base::TimeDelta kTimeUpdateInterval =
- base::TimeDelta::FromMilliseconds(250);
-
-} // namespace
-
-Receiver::Receiver(std::unique_ptr<Renderer> renderer, RpcBroker* rpc_broker)
- : renderer_(std::move(renderer)),
- rpc_broker_(rpc_broker),
- rpc_handle_(rpc_broker_->GetUniqueHandle()),
- weak_factory_(this) {
- DCHECK(renderer_);
- DCHECK(rpc_broker_);
- rpc_broker_->RegisterMessageReceiverCallback(
- rpc_handle_,
- base::Bind(&Receiver::OnReceivedRpc, weak_factory_.GetWeakPtr()));
- rpc_broker_->RegisterMessageReceiverCallback(
- RpcBroker::kAcquireHandle,
- base::Bind(&Receiver::OnReceivedRpc, weak_factory_.GetWeakPtr()));
-}
-
-Receiver::~Receiver() {
- rpc_broker_->UnregisterMessageReceiverCallback(rpc_handle_);
- rpc_broker_->UnregisterMessageReceiverCallback(RpcBroker::kAcquireHandle);
-}
-
-void Receiver::OnReceivedRpc(std::unique_ptr<pb::RpcMessage> message) {
- DCHECK(message);
- switch (message->proc()) {
- case pb::RpcMessage::RPC_ACQUIRE_RENDERER:
- AcquireRenderer(std::move(message));
- break;
- case pb::RpcMessage::RPC_R_FLUSHUNTIL:
- FlushUntil(std::move(message));
- break;
- case pb::RpcMessage::RPC_R_STARTPLAYINGFROM:
- StartPlayingFrom(std::move(message));
- break;
- case pb::RpcMessage::RPC_R_SETPLAYBACKRATE:
- SetPlaybackRate(std::move(message));
- break;
- case pb::RpcMessage::RPC_R_SETVOLUME:
- SetVolume(std::move(message));
- break;
- case pb::RpcMessage::RPC_R_INITIALIZE:
- Initialize(std::move(message));
- break;
- default:
- VLOG(1) << __func__ << ": Unknow RPC message. proc=" << message->proc();
- }
-}
-
-void Receiver::AcquireRenderer(std::unique_ptr<pb::RpcMessage> message) {
- DVLOG(3) << __func__ << ": Receives RPC_ACQUIRE_RENDERER with remote_handle= "
- << message->integer_value();
-
- remote_handle_ = message->integer_value();
- if (stream_provider_) {
- VLOG(1) << "Acquire renderer error: Already aquired.";
- OnError(PipelineStatus::PIPELINE_ERROR_DECODE);
- return;
- }
-
- stream_provider_.reset(new StreamProvider(
- rpc_broker_, base::Bind(&Receiver::OnError, weak_factory_.GetWeakPtr(),
- PipelineStatus::PIPELINE_ERROR_DECODE)));
-
- DVLOG(3) << __func__
- << ": Issues RPC_ACQUIRE_RENDERER_DONE RPC message. remote_handle="
- << remote_handle_ << " rpc_handle=" << rpc_handle_;
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_ACQUIRE_RENDERER_DONE);
- rpc->set_integer_value(rpc_handle_);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::Initialize(std::unique_ptr<pb::RpcMessage> message) {
- DCHECK(stream_provider_);
- DVLOG(3) << __func__ << ": Receives RPC_R_INITIALIZE with callback handle= "
- << message->renderer_initialize_rpc().callback_handle();
- DCHECK(message->renderer_initialize_rpc().callback_handle() ==
- remote_handle_);
- if (!stream_provider_)
- OnRendererInitialized(PipelineStatus::PIPELINE_ERROR_INITIALIZATION_FAILED);
-
- stream_provider_->Initialize(
- message->renderer_initialize_rpc().audio_demuxer_handle(),
- message->renderer_initialize_rpc().video_demuxer_handle(),
- base::Bind(&Receiver::OnStreamInitialized, weak_factory_.GetWeakPtr()));
-}
-
-void Receiver::OnStreamInitialized() {
- DCHECK(stream_provider_);
- renderer_->Initialize(
- stream_provider_.get(), this,
- base::Bind(&Receiver::OnRendererInitialized, weak_factory_.GetWeakPtr()));
-}
-
-void Receiver::OnRendererInitialized(PipelineStatus status) {
- DVLOG(3) << __func__ << ": Issues RPC_R_INITIALIZE_CALLBACK RPC message."
- << "remote_handle=" << remote_handle_;
-
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_R_INITIALIZE_CALLBACK);
- rpc->set_boolean_value(status == PIPELINE_OK);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::SetPlaybackRate(std::unique_ptr<pb::RpcMessage> message) {
- const double playback_rate = message->double_value();
- DVLOG(3) << __func__
- << ": Receives RPC_R_SETPLAYBACKRATE with rate=" << playback_rate;
- renderer_->SetPlaybackRate(playback_rate);
-
- if (playback_rate == 0.0) {
- if (time_update_timer_.IsRunning()) {
- time_update_timer_.Stop();
- // Send one final media time update since the sender will not get any
- // until playback resumes.
- SendMediaTimeUpdate();
- }
- } else {
- ScheduleMediaTimeUpdates();
- }
-}
-
-void Receiver::FlushUntil(std::unique_ptr<pb::RpcMessage> message) {
- DVLOG(3) << __func__ << ": Receives RPC_R_FLUSHUNTIL RPC message.";
-
- const pb::RendererFlushUntil flush_message =
- message->renderer_flushuntil_rpc();
- DCHECK_EQ(flush_message.callback_handle(), remote_handle_);
- if (stream_provider_) {
- if (flush_message.has_audio_count()) {
- stream_provider_->FlushUntil(DemuxerStream::AUDIO,
- flush_message.audio_count());
- }
- if (flush_message.has_video_count()) {
- stream_provider_->FlushUntil(DemuxerStream::VIDEO,
- flush_message.video_count());
- }
- }
- time_update_timer_.Stop();
- renderer_->Flush(
- base::Bind(&Receiver::OnFlushDone, weak_factory_.GetWeakPtr()));
-}
-
-void Receiver::OnFlushDone() {
- DVLOG(3) << __func__ << ": Issues RPC_R_FLUSHUNTIL_CALLBACK RPC message.";
-
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_R_FLUSHUNTIL_CALLBACK);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::StartPlayingFrom(std::unique_ptr<pb::RpcMessage> message) {
- DVLOG(3) << __func__ << ": Receives RPC_R_STARTPLAYINGFROM message.";
- base::TimeDelta time =
- base::TimeDelta::FromMicroseconds(message->integer64_value());
- renderer_->StartPlayingFrom(time);
- ScheduleMediaTimeUpdates();
-}
-
-void Receiver::ScheduleMediaTimeUpdates() {
- if (time_update_timer_.IsRunning())
- return;
- SendMediaTimeUpdate();
- time_update_timer_.Start(
- FROM_HERE, kTimeUpdateInterval,
- base::Bind(&Receiver::SendMediaTimeUpdate, weak_factory_.GetWeakPtr()));
-}
-
-void Receiver::SetVolume(std::unique_ptr<pb::RpcMessage> message) {
- DVLOG(3) << __func__ << ": Receives RPC_R_SETVOLUME message.";
- renderer_->SetVolume(message->double_value());
-}
-
-void Receiver::SendMediaTimeUpdate() {
- // Issues RPC_RC_ONTIMEUPDATE RPC message.
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONTIMEUPDATE);
- auto* message = rpc->mutable_rendererclient_ontimeupdate_rpc();
- base::TimeDelta media_time = renderer_->GetMediaTime();
- message->set_time_usec(media_time.InMicroseconds());
- base::TimeDelta max_time = media_time;
- message->set_max_time_usec(max_time.InMicroseconds());
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONTIMEUPDATE message."
- << " media_time = " << media_time.InMicroseconds()
- << " max_time= " << max_time.InMicroseconds();
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnReceivedBuffer(DemuxerStream::Type type,
- scoped_refptr<DecoderBuffer> buffer) {
- DVLOG(3) << __func__
- << ": type=" << (type == DemuxerStream::AUDIO ? "Audio" : "Video");
- DCHECK(stream_provider_);
- stream_provider_->AppendBuffer(type, buffer);
-}
-
-void Receiver::OnError(PipelineStatus status) {
- VLOG(1) << __func__ << ": Issues RPC_RC_ONERROR message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONERROR);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnEnded() {
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONENDED message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONENDED);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
- time_update_timer_.Stop();
-}
-
-void Receiver::OnStatisticsUpdate(const PipelineStatistics& stats) {
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONSTATISTICSUPDATE message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONSTATISTICSUPDATE);
- auto* message = rpc->mutable_rendererclient_onstatisticsupdate_rpc();
- message->set_audio_bytes_decoded(stats.audio_bytes_decoded);
- message->set_video_bytes_decoded(stats.video_bytes_decoded);
- message->set_video_frames_decoded(stats.video_frames_decoded);
- message->set_video_frames_dropped(stats.video_frames_dropped);
- message->set_audio_memory_usage(stats.audio_memory_usage);
- message->set_video_memory_usage(stats.video_memory_usage);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnBufferingStateChange(BufferingState state) {
- DVLOG(3) << __func__
- << ": Issues RPC_RC_ONBUFFERINGSTATECHANGE message: state=" << state;
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONBUFFERINGSTATECHANGE);
- auto* message = rpc->mutable_rendererclient_onbufferingstatechange_rpc();
- message->set_state(ToProtoMediaBufferingState(state).value());
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnWaitingForDecryptionKey() {
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONWAITINGFORDECRYPTIONKEY message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONWAITINGFORDECRYPTIONKEY);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnVideoNaturalSizeChange(const gfx::Size& size) {
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONVIDEONATURALSIZECHANGE message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONVIDEONATURALSIZECHANGE);
- auto* message = rpc->mutable_rendererclient_onvideonatualsizechange_rpc();
- message->set_width(size.width());
- message->set_height(size.height());
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnVideoOpacityChange(bool opaque) {
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONVIDEOOPACITYCHANGE message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONVIDEOOPACITYCHANGE);
- rpc->set_boolean_value(opaque);
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-void Receiver::OnDurationChange(base::TimeDelta duration) {
- DVLOG(3) << __func__ << ": Issues RPC_RC_ONDURATIONCHANGE message.";
- std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
- rpc->set_handle(remote_handle_);
- rpc->set_proc(pb::RpcMessage::RPC_RC_ONDURATIONCHANGE);
- rpc->set_integer_value(duration.InMicroseconds());
- rpc_broker_->SendMessageToRemote(std::move(rpc));
-}
-
-} // namespace remoting
-} // namespace media
« no previous file with comments | « media/remoting/receiver.h ('k') | media/remoting/stream_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698