blob: 0480528ead118fe5c630700f17e9f3eaa8ba2686 [file] [log] [blame]
// Copyright 2021 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.
#ifndef MEDIA_MOJO_MOJOM_CDM_CAPABILITY_MOJOM_TRAITS_H_
#define MEDIA_MOJO_MOJOM_CDM_CAPABILITY_MOJOM_TRAITS_H_
#include <vector>
#include "base/containers/flat_set.h"
#include "media/base/audio_codecs.h"
#include "media/base/content_decryption_module.h"
#include "media/base/encryption_scheme.h"
#include "media/base/video_codecs.h"
#include "media/cdm/cdm_capability.h"
#include "media/mojo/mojom/key_system_support.mojom.h"
namespace mojo {
template <>
struct StructTraits<media::mojom::CdmCapabilityDataView, media::CdmCapability> {
static const std::vector<media::AudioCodec>& audio_codecs(
const media::CdmCapability& input) {
return input.audio_codecs;
}
static const media::CdmCapability::VideoCodecMap& video_codecs(
const media::CdmCapability& input) {
return input.video_codecs;
}
// List of encryption schemes supported by the CDM (e.g. cenc).
static const base::flat_set<media::EncryptionScheme>& encryption_schemes(
const media::CdmCapability& input) {
return input.encryption_schemes;
}
// List of session types supported by the CDM.
static const base::flat_set<media::CdmSessionType>& session_types(
const media::CdmCapability& input) {
return input.session_types;
}
static bool Read(media::mojom::CdmCapabilityDataView input,
media::CdmCapability* output);
};
} // namespace mojo
#endif // MEDIA_MOJO_MOJOM_CDM_CAPABILITY_MOJOM_TRAITS_H_