// Copyright 2017 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.

module media;

import "lib/media/fidl/net_media_player.fidl";

// Network media service definition.
[ServiceName="media::NetMediaService"]
interface NetMediaService {
  // Creates a net media player that wraps the provided MediaPlayer.
  CreateNetMediaPlayer@0(
    string service_name,
    MediaPlayer media_player,
    NetMediaPlayer& net_media_player);

  // Creates a proxy for a remote NetMediaPlayer.
  CreateNetMediaPlayerProxy@1(
    string device_name,
    string service_name,
    NetMediaPlayer& net_media_player_proxy);
};
