// 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. #ifndef MEDIA_REMOTING_PROTO_ENUM_UTILS_H_ #define MEDIA_REMOTING_PROTO_ENUM_UTILS_H_ #include "base/optional.h" #include "media/base/audio_codecs.h" #include "media/base/buffering_state.h" #include "media/base/cdm_key_information.h" #include "media/base/cdm_promise.h" #include "media/base/channel_layout.h" #include "media/base/content_decryption_module.h" #include "media/base/demuxer_stream.h" #include "media/base/encryption_scheme.h" #include "media/base/sample_format.h" #include "media/base/video_codecs.h" #include "media/base/video_types.h" #include "media/remoting/rpc.pb.h" namespace media { namespace remoting { // The following functions map between the enum values in media/base modules and // the equivalents in the media/remoting protobuf classes. The purpose of these // converters is to decouple the media/base modules from the media/remoting // modules while maintaining compile-time checks to ensure that there are always // valid, backwards-compatible mappings between the two. // // Each returns a base::Optional value. If it is not set, that indicates the // conversion failed. base::Optional ToMediaEncryptionSchemeCipherMode( pb::EncryptionScheme::CipherMode value); base::Optional ToProtoEncryptionSchemeCipherMode(EncryptionScheme::CipherMode value); base::Optional ToMediaAudioCodec( pb::AudioDecoderConfig::Codec value); base::Optional ToProtoAudioDecoderConfigCodec( AudioCodec value); base::Optional ToMediaSampleFormat( pb::AudioDecoderConfig::SampleFormat value); base::Optional ToProtoAudioDecoderConfigSampleFormat(SampleFormat value); base::Optional ToMediaChannelLayout( pb::AudioDecoderConfig::ChannelLayout value); base::Optional ToProtoAudioDecoderConfigChannelLayout(ChannelLayout value); base::Optional ToMediaVideoCodec( pb::VideoDecoderConfig::Codec value); base::Optional ToProtoVideoDecoderConfigCodec( VideoCodec value); base::Optional ToMediaVideoCodecProfile( pb::VideoDecoderConfig::Profile value); base::Optional ToProtoVideoDecoderConfigProfile(VideoCodecProfile value); base::Optional ToMediaVideoPixelFormat( pb::VideoDecoderConfig::Format value); base::Optional ToProtoVideoDecoderConfigFormat( VideoPixelFormat value); base::Optional ToMediaColorSpace( pb::VideoDecoderConfig::ColorSpace value); base::Optional ToProtoVideoDecoderConfigColorSpace(ColorSpace value); base::Optional ToMediaBufferingState( pb::RendererClientOnBufferingStateChange::State value); base::Optional ToProtoMediaBufferingState(BufferingState value); base::Optional ToMediaCdmKeyInformationKeyStatus( pb::CdmKeyInformation::KeyStatus value); base::Optional ToProtoCdmKeyInformation( CdmKeyInformation::KeyStatus value); base::Optional ToCdmPromiseException( pb::CdmException value); base::Optional ToProtoCdmException( CdmPromise::Exception value); base::Optional ToMediaCdmMessageType(pb::CdmMessageType value); base::Optional ToProtoCdmMessageType(CdmMessageType value); base::Optional ToCdmSessionType(pb::CdmSessionType value); base::Optional ToProtoCdmSessionType(CdmSessionType value); base::Optional ToMediaEmeInitDataType( pb::CdmCreateSessionAndGenerateRequest::EmeInitDataType value); base::Optional ToProtoMediaEmeInitDataType(EmeInitDataType value); base::Optional ToDemuxerStreamStatus( pb::DemuxerStreamReadUntilCallback::Status value); base::Optional ToProtoDemuxerStreamStatus(DemuxerStream::Status value); } // namespace remoting } // namespace media #endif // MEDIA_REMOTING_PROTO_ENUM_UTILS_H_