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

#include "services/media/framework/metadata.h"

namespace mojo {
namespace media {

// static
MetadataPtr Metadata::Create(
    uint64_t duration_ns,
    const std::string& title,
    const std::string& artist,
    const std::string& album,
    const std::string& publisher,
    const std::string& genre,
    const std::string& composer) {
  return MetadataPtr(new Metadata(
      duration_ns,
      title,
      artist,
      album,
      publisher,
      genre,
      composer));
}

Metadata::Metadata(
    uint64_t duration_ns,
    const std::string& title,
    const std::string& artist,
    const std::string& album,
    const std::string& publisher,
    const std::string& genre,
    const std::string& composer) :
    duration_ns_(duration_ns),
    title_(title),
    artist_(artist),
    album_(album),
    publisher_(publisher),
    genre_(genre),
    composer_(composer) {}

Metadata::~Metadata() {}

}  // namespace media
}  // namespace mojo
