// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.media.sessions2;

using fuchsia.media;

/// All information required by the media session registry service to
/// register a player so that clients may observe its status and control
/// it.
table PlayerRegistration {
    /// The domain on which the player exists. Unset if it is the native
    /// Fuchsia domain.
    1: Domain domain;
    /// The usage of the player's audio output. By default, this is assumed
    /// to be MEDIA.
    2: fuchsia.media.AudioRenderUsage usage;
};

/// `Publisher` publishes media players so they may be discovered and
/// controlled by clients who have permission to do so.
[Discoverable]
protocol Publisher {
    [Deprecated, Transitional]
    PublishPlayer(Player player, PlayerRegistration registration);

    [Transitional]
    Publish(Player player, PlayerRegistration registration) -> (SessionId session_id);
};
