// 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. module media.mojom; import "media/mojo/interfaces/media_types.mojom"; import "media/mojo/interfaces/video_decode_stats_recorder.mojom"; import "media/mojo/interfaces/watch_time_recorder.mojom"; import "mojo/public/mojom/base/time.mojom"; import "ui/gfx/geometry/mojo/geometry.mojom"; // Provider interface used to avoid having one time setters on each interface. // Each recorder will be stamped with an ID which can be used for linking UKM. interface MediaMetricsProvider { // Assigns a playback ID and sets up this provider instance with information // needed to make UKM reports. No other methods may be called until after // Initialize() has been called. Initialize(bool is_mse); // Called when a playback ends in error. The status is reported to UKM when // the provider is destructed. OnError(PipelineStatus status); // Setters for various one-time lazily generated metrics or properties. SetIsEME(); SetTimeToMetadata(mojo_base.mojom.TimeDelta elapsed); SetTimeToFirstFrame(mojo_base.mojom.TimeDelta elapsed); SetTimeToPlayReady(mojo_base.mojom.TimeDelta elapsed); // Creates a WatchTimeRecorder instance using |properties|. If any of those // properties changes, a new recorder should be requested. AcquireWatchTimeRecorder(PlaybackProperties properties, WatchTimeRecorder& recorder); // Creates a VideoDecodeStatsRecorder instance. AcquireVideoDecodeStatsRecorder(VideoDecodeStatsRecorder& recorder); };