Commit 2051bc2e authored by Takumi Fujimoto's avatar Takumi Fujimoto Committed by Chromium LUCI CQ

Media remoting: Don't record compatibility if no remoting-capable sink

UpdateAndMaybeSwitch() is hit even when not mirroring, so we should
record the remoting compatibility only when mirroring.

Bug: 1163944
Change-Id: I05415bc9b15115526f66cdb6006cb9e946a0d379
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2638494
Commit-Queue: Takumi Fujimoto <takumif@chromium.org>
Reviewed-by: default avatarJordan Bayles <jophba@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845891}
parent 5a53c7c4
...@@ -19,6 +19,7 @@ namespace media { ...@@ -19,6 +19,7 @@ namespace media {
namespace remoting { namespace remoting {
using mojom::RemotingSinkAudioCapability; using mojom::RemotingSinkAudioCapability;
using mojom::RemotingSinkFeature;
using mojom::RemotingSinkVideoCapability; using mojom::RemotingSinkVideoCapability;
namespace { namespace {
...@@ -129,7 +130,7 @@ void RendererController::OnSinkAvailable( ...@@ -129,7 +130,7 @@ void RendererController::OnSinkAvailable(
sink_metadata_ = *metadata; sink_metadata_ = *metadata;
if (!HasFeatureCapability(mojom::RemotingSinkFeature::RENDERING)) { if (!SinkSupportsRemoting()) {
OnSinkGone(); OnSinkGone();
return; return;
} }
...@@ -470,7 +471,8 @@ void RendererController::UpdateAndMaybeSwitch(StartTrigger start_trigger, ...@@ -470,7 +471,8 @@ void RendererController::UpdateAndMaybeSwitch(StartTrigger start_trigger,
// screen if switching to remoting while paused. Thus, the user experience is // screen if switching to remoting while paused. Thus, the user experience is
// improved by not starting remoting until playback resumes. // improved by not starting remoting until playback resumes.
bool should_be_remoting = client_ && !encountered_renderer_fatal_error_ && bool should_be_remoting = client_ && !encountered_renderer_fatal_error_ &&
is_dominant_content_ && !is_paused_; is_dominant_content_ && !is_paused_ &&
SinkSupportsRemoting();
if (should_be_remoting) { if (should_be_remoting) {
const RemotingCompatibility compatibility = GetCompatibility(); const RemotingCompatibility compatibility = GetCompatibility();
metrics_recorder_.RecordCompatibility(compatibility); metrics_recorder_.RecordCompatibility(compatibility);
...@@ -610,12 +612,16 @@ bool RendererController::HasAudioCapability( ...@@ -610,12 +612,16 @@ bool RendererController::HasAudioCapability(
} }
bool RendererController::HasFeatureCapability( bool RendererController::HasFeatureCapability(
mojom::RemotingSinkFeature capability) const { RemotingSinkFeature capability) const {
return std::find(std::begin(sink_metadata_.features), return std::find(std::begin(sink_metadata_.features),
std::end(sink_metadata_.features), std::end(sink_metadata_.features),
capability) != std::end(sink_metadata_.features); capability) != std::end(sink_metadata_.features);
} }
bool RendererController::SinkSupportsRemoting() const {
return HasFeatureCapability(RemotingSinkFeature::RENDERING);
}
void RendererController::SendMessageToSink( void RendererController::SendMessageToSink(
std::unique_ptr<std::vector<uint8_t>> message) { std::unique_ptr<std::vector<uint8_t>> message) {
DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(thread_checker_.CalledOnValidThread());
......
...@@ -157,6 +157,7 @@ class RendererController final : public mojom::RemotingSource, ...@@ -157,6 +157,7 @@ class RendererController final : public mojom::RemotingSource,
bool HasVideoCapability(mojom::RemotingSinkVideoCapability capability) const; bool HasVideoCapability(mojom::RemotingSinkVideoCapability capability) const;
bool HasAudioCapability(mojom::RemotingSinkAudioCapability capability) const; bool HasAudioCapability(mojom::RemotingSinkAudioCapability capability) const;
bool HasFeatureCapability(mojom::RemotingSinkFeature capability) const; bool HasFeatureCapability(mojom::RemotingSinkFeature capability) const;
bool SinkSupportsRemoting() const;
// Callback from RpcBroker when sending message to remote sink. // Callback from RpcBroker when sending message to remote sink.
void SendMessageToSink(std::unique_ptr<std::vector<uint8_t>> message); void SendMessageToSink(std::unique_ptr<std::vector<uint8_t>> message);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment