// 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.
struct Metadata {
    vector<Property> properties;
};

struct Property {
    string label;
    string value;
};

const string METADATA_LABEL_TITLE = "fuchsia.media.title";
const string METADATA_LABEL_ARTIST = "fuchsia.media.artist";
const string METADATA_LABEL_ALBUM = "fuchsia.media.album";
const string METADATA_LABEL_PUBLISHER = "fuchsia.media.publisher";
const string METADATA_LABEL_GENRE = "fuchsia.media.genre";
const string METADATA_LABEL_COMPOSER = "fuchsia.media.composer";

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