| // 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. |
| |
| #ifndef MEDIA_BASE_OVERLAY_INFO_H_ |
| #define MEDIA_BASE_OVERLAY_INFO_H_ |
| |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "base/unguessable_token.h" |
| #include "media/base/media_export.h" |
| #include "third_party/abseil-cpp/absl/types/optional.h" |
| |
| namespace media { |
| |
| struct MEDIA_EXPORT OverlayInfo { |
| // An unset routing token indicates "do not use any routing token". A null |
| // routing token isn't serializable, else we'd probably use that instead. |
| using RoutingToken = absl::optional<base::UnguessableToken>; |
| |
| OverlayInfo(); |
| OverlayInfo(const OverlayInfo&); |
| OverlayInfo& operator=(const OverlayInfo&); |
| |
| // Convenience functions to return true if and only if this specifies a |
| // surface ID / routing token that is not kNoSurfaceID / empty. I.e., if we |
| // provide enough info to create an overlay. |
| bool HasValidRoutingToken() const; |
| |
| // Whether |other| refers to the same (surface_id, routing_token) pair as |
| // |this|. |
| bool RefersToSameOverlayAs(const OverlayInfo& other); |
| |
| // The routing token for AndroidOverlay, if any. |
| RoutingToken routing_token; |
| |
| // Is the player in fullscreen? |
| bool is_fullscreen = false; |
| |
| // Is the player persistent video (PiP)? |
| bool is_persistent_video = false; |
| }; |
| |
| // Used by the WebMediaPlayer to provide overlay information to the decoder, |
| // which can ask for that information repeatedly (see |
| // WebMediaPlayerImpl::OnOverlayInfoRequested). |
| using ProvideOverlayInfoCB = base::RepeatingCallback<void(const OverlayInfo&)>; |
| using RequestOverlayInfoCB = |
| base::RepeatingCallback<void(bool, ProvideOverlayInfoCB)>; |
| |
| } // namespace media |
| |
| #endif // MEDIA_BASE_OVERLAY_INFO_H_ |