chromium/media/mojo/mojom/stable/stable_video_decoder_types_mojom_traits.h

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

#ifndef MEDIA_MOJO_MOJOM_STABLE_STABLE_VIDEO_DECODER_TYPES_MOJOM_TRAITS_H_
#define MEDIA_MOJO_MOJOM_STABLE_STABLE_VIDEO_DECODER_TYPES_MOJOM_TRAITS_H_

#include "base/notreached.h"
#include "media/base/cdm_context.h"
#include "media/base/video_frame_metadata.h"
#include "media/mojo/mojom/stable/stable_video_decoder_types.mojom.h"
#include "mojo/public/cpp/bindings/optional_as_pointer.h"

namespace mojo {

template <>
struct EnumTraits<media::stable::mojom::CdmContextEvent,
                  ::media::CdmContext::Event> {};

template <>
struct EnumTraits<media::stable::mojom::ColorSpacePrimaryID,
                  gfx::ColorSpace::PrimaryID> {};

template <>
struct EnumTraits<media::stable::mojom::ColorSpaceTransferID,
                  gfx::ColorSpace::TransferID> {};

template <>
struct EnumTraits<media::stable::mojom::ColorSpaceMatrixID,
                  gfx::ColorSpace::MatrixID> {};

template <>
struct EnumTraits<media::stable::mojom::ColorSpaceRangeID,
                  gfx::ColorSpace::RangeID> {};

template <>
struct StructTraits<media::stable::mojom::ColorSpaceDataView, gfx::ColorSpace> {};

template <>
struct StructTraits<media::stable::mojom::ColorVolumeMetadataDataView,
                    gfx::HdrMetadataSmpteSt2086> {};

template <>
struct StructTraits<media::stable::mojom::DecoderBufferDataView,
                    scoped_refptr<media::DecoderBuffer>> {};

template <>
struct StructTraits<media::stable::mojom::DecoderBufferSideDataDataView,
                    media::DecoderBufferSideData> {};

template <>
struct StructTraits<media::stable::mojom::DecryptConfigDataView,
                    std::unique_ptr<media::DecryptConfig>> {};

template <>
struct EnumTraits<media::stable::mojom::DecryptStatus,
                  ::media::Decryptor::Status> {};

template <>
struct EnumTraits<media::stable::mojom::EncryptionScheme,
                  ::media::EncryptionScheme> {};

template <>
struct StructTraits<media::stable::mojom::HDRMetadataDataView,
                    gfx::HDRMetadata> {};

template <>
struct EnumTraits<media::stable::mojom::MediaLogRecord_Type,
                  media::MediaLogRecord::Type> {};

template <>
struct StructTraits<media::stable::mojom::MediaLogRecordDataView,
                    media::MediaLogRecord> {};

template <>
struct StructTraits<media::stable::mojom::NativeGpuMemoryBufferHandleDataView,
                    gfx::GpuMemoryBufferHandle> {};

template <>
struct StructTraits<media::stable::mojom::StatusDataDataView,
                    media::internal::StatusData> {};

template <>
struct StructTraits<media::stable::mojom::StatusDataView,
                    media::DecoderStatus> {};

template <>
struct StructTraits<media::stable::mojom::SupportedVideoDecoderConfigDataView,
                    media::SupportedVideoDecoderConfig> {};

template <>
struct EnumTraits<media::stable::mojom::VideoCodec, ::media::VideoCodec> {};

template <>
struct EnumTraits<media::stable::mojom::VideoCodecProfile,
                  ::media::VideoCodecProfile> {};

template <>
struct StructTraits<media::stable::mojom::VideoDecoderConfigDataView,
                    media::VideoDecoderConfig> {};

template <>
struct EnumTraits<media::stable::mojom::VideoDecoderType,
                  ::media::VideoDecoderType> {};

template <>
struct StructTraits<media::stable::mojom::VideoFrameMetadataDataView,
                    media::VideoFrameMetadata> {};

template <>
struct EnumTraits<media::stable::mojom::VideoPixelFormat,
                  ::media::VideoPixelFormat> {};

template <>
struct EnumTraits<media::stable::mojom::WaitingReason, media::WaitingReason> {};

template <>
struct StructTraits<media::stable::mojom::SubsampleEntryDataView,
                    ::media::SubsampleEntry> {};

}  // namespace mojo

#endif  // MEDIA_MOJO_MOJOM_STABLE_STABLE_VIDEO_DECODER_TYPES_MOJOM_TRAITS_H_