// Copyright 2018 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;

// Describes media.
type Metadata = struct {
    properties vector<Property>;
};

type Property = struct {
    label string;
    value string;
};

const METADATA_LABEL_TITLE string = "fuchsia.media.title";
const METADATA_LABEL_ARTIST string = "fuchsia.media.artist";
const METADATA_LABEL_ALBUM string = "fuchsia.media.album";
const METADATA_LABEL_TRACK_NUMBER string = "fuchsia.media.track_number";
const METADATA_LABEL_PUBLISHER string = "fuchsia.media.publisher";
const METADATA_LABEL_GENRE string = "fuchsia.media.genre";
const METADATA_LABEL_COMPOSER string = "fuchsia.media.composer";
const METADATA_LABEL_SUBTITLE string = "fuchsia.media.subtitle";
const METADATA_LABEL_RELEASE_DATE string = "fuchsia.media.release_date";
const METADATA_LABEL_EPISODE string = "fuchsia.media.episode";
const METADATA_LABEL_SEASON string = "fuchsia.media.season";
const METADATA_LABEL_STUDIO string = "fuchsia.media.studio";

/// The title of the source of the media, e.g. a player, streaming service, or
/// website.
const METADATA_SOURCE_TITLE string = "fuchsia.media.source_title";
