// 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.url;

type MediaImageType = strict enum {
    /// Artwork for the playing media.
    ARTWORK = 0;
    /// An icon for the source of the playing media (e.g. the player or
    /// streaming service).
    SOURCE_ICON = 1;
};

/// A variant of an image at a specific size.
type ImageSizeVariant = struct {
    url fuchsia.url.Url;
    width uint32;
    height uint32;
};

/// An image for playing media.
type MediaImage = table {
    1: image_type MediaImageType;
    /// Available variants of the image.
    2: sizes vector<ImageSizeVariant>:16;
};
