| Index: media/mojo/services/media_type_converters.cc
|
| diff --git a/media/mojo/services/media_type_converters.cc b/media/mojo/services/media_type_converters.cc
|
| index 07404f72fe72db408a9673e3f7dec4e38c1f44f3..c4b3a9643a805acd42f4288d902494d46baae813 100644
|
| --- a/media/mojo/services/media_type_converters.cc
|
| +++ b/media/mojo/services/media_type_converters.cc
|
| @@ -4,29 +4,34 @@
|
|
|
| #include "media/mojo/services/media_type_converters.h"
|
|
|
| -#include "base/macros.h"
|
| #include "media/base/audio_decoder_config.h"
|
| #include "media/base/buffering_state.h"
|
| #include "media/base/decoder_buffer.h"
|
| #include "media/base/demuxer_stream.h"
|
| +#include "media/base/video_decoder_config.h"
|
| #include "media/mojo/interfaces/demuxer_stream.mojom.h"
|
| +#include "mojo/converters/geometry/geometry_type_converters.h"
|
| #include "mojo/public/cpp/system/data_pipe.h"
|
|
|
| namespace mojo {
|
|
|
| -#define ASSERT_ENUM_EQ(media_enum, media_prefix, mojo_prefix, value) \
|
| - COMPILE_ASSERT(media::media_prefix##value == \
|
| - static_cast<media::media_enum>(mojo_prefix##value), \
|
| - value##_enum_value_differs)
|
| +#define ASSERT_ENUM_EQ(media_enum, media_prefix, mojo_prefix, value) \
|
| + static_assert(media::media_prefix##value == \
|
| + static_cast<media::media_enum>(mojo_prefix##value), \
|
| + "Mismatched enum: " #media_prefix #value \
|
| + " != " #mojo_prefix #value)
|
| +
|
| +#define ASSERT_ENUM_EQ_RAW(media_enum, media_enum_value, mojo_enum_value) \
|
| + static_assert(media::media_enum_value == \
|
| + static_cast<media::media_enum>(mojo_enum_value), \
|
| + "Mismatched enum: " #media_enum_value " != " #mojo_enum_value)
|
|
|
| // BufferingState.
|
| ASSERT_ENUM_EQ(BufferingState, BUFFERING_, BUFFERING_STATE_, HAVE_NOTHING);
|
| ASSERT_ENUM_EQ(BufferingState, BUFFERING_, BUFFERING_STATE_, HAVE_ENOUGH);
|
|
|
| // AudioCodec.
|
| -COMPILE_ASSERT(media::kUnknownAudioCodec ==
|
| - static_cast<media::AudioCodec>(AUDIO_CODEC_UNKNOWN),
|
| - kUnknownAudioCodec_enum_value_differs);
|
| +ASSERT_ENUM_EQ_RAW(AudioCodec, kUnknownAudioCodec, AUDIO_CODEC_UNKNOWN);
|
| ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, AAC);
|
| ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, MP3);
|
| ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, PCM);
|
| @@ -39,9 +44,7 @@ ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, PCM_S16BE);
|
| ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, PCM_S24BE);
|
| ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, Opus);
|
| ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, PCM_ALAW);
|
| -COMPILE_ASSERT(media::kAudioCodecMax ==
|
| - static_cast<media::AudioCodec>(AUDIO_CODEC_MAX),
|
| - kAudioCodecMax_enum_value_differs);
|
| +ASSERT_ENUM_EQ_RAW(AudioCodec, kAudioCodecMax, AUDIO_CODEC_MAX);
|
|
|
| // ChannelLayout.
|
| ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _NONE);
|
| @@ -84,9 +87,7 @@ ASSERT_ENUM_EQ(ChannelLayout,
|
| ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _MAX);
|
|
|
| // SampleFormat.
|
| -COMPILE_ASSERT(media::kUnknownSampleFormat ==
|
| - static_cast<media::SampleFormat>(SAMPLE_FORMAT_UNKNOWN),
|
| - kUnknownSampleFormat_enum_value_differs);
|
| +ASSERT_ENUM_EQ_RAW(SampleFormat, kUnknownSampleFormat, SAMPLE_FORMAT_UNKNOWN);
|
| ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, U8);
|
| ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, S16);
|
| ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, S32);
|
| @@ -95,34 +96,116 @@ ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, PlanarS16);
|
| ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, PlanarF32);
|
| ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, Max);
|
|
|
| -// DemuxerStream Type.
|
| -COMPILE_ASSERT(media::DemuxerStream::UNKNOWN ==
|
| - static_cast<media::DemuxerStream::Type>(
|
| - mojo::DemuxerStream::TYPE_UNKNOWN),
|
| - DemuxerStream_Type_enum_value_differs);
|
| -COMPILE_ASSERT(media::DemuxerStream::AUDIO ==
|
| - static_cast<media::DemuxerStream::Type>(
|
| - mojo::DemuxerStream::TYPE_AUDIO),
|
| - DemuxerStream_Type_enum_value_differs);
|
| -// Update this if new media::DemuxerStream::Type values are introduced.
|
| -COMPILE_ASSERT(media::DemuxerStream::NUM_TYPES ==
|
| - static_cast<media::DemuxerStream::Type>(
|
| - mojo::DemuxerStream::TYPE_LAST_TYPE + 3),
|
| - DemuxerStream_Type_enum_value_differs);
|
| +// DemuxerStream Type. Note: Mojo DemuxerStream's don't have the TEXT type.
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Type,
|
| + DemuxerStream::UNKNOWN,
|
| + DemuxerStream::TYPE_UNKNOWN);
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Type,
|
| + DemuxerStream::AUDIO,
|
| + DemuxerStream::TYPE_AUDIO);
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Type,
|
| + DemuxerStream::VIDEO,
|
| + DemuxerStream::TYPE_VIDEO);
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Type,
|
| + DemuxerStream::NUM_TYPES,
|
| + DemuxerStream::TYPE_LAST_TYPE + 2);
|
|
|
| // DemuxerStream Status.
|
| -COMPILE_ASSERT(media::DemuxerStream::kOk ==
|
| - static_cast<media::DemuxerStream::Status>(
|
| - mojo::DemuxerStream::STATUS_OK),
|
| - DemuxerStream_Status_enum_value_differs);
|
| -COMPILE_ASSERT(media::DemuxerStream::kAborted ==
|
| - static_cast<media::DemuxerStream::Status>(
|
| - mojo::DemuxerStream::STATUS_ABORTED),
|
| - DemuxerStream_Status_enum_value_differs);
|
| -COMPILE_ASSERT(media::DemuxerStream::kConfigChanged ==
|
| - static_cast<media::DemuxerStream::Status>(
|
| - mojo::DemuxerStream::STATUS_CONFIG_CHANGED),
|
| - DemuxerStream_Status_enum_value_differs);
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Status,
|
| + DemuxerStream::kOk,
|
| + DemuxerStream::STATUS_OK);
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Status,
|
| + DemuxerStream::kAborted,
|
| + DemuxerStream::STATUS_ABORTED);
|
| +ASSERT_ENUM_EQ_RAW(DemuxerStream::Status,
|
| + DemuxerStream::kConfigChanged,
|
| + DemuxerStream::STATUS_CONFIG_CHANGED);
|
| +
|
| +// VideoFormat.
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format,
|
| + VideoFrame::UNKNOWN,
|
| + VIDEO_FORMAT_UNKNOWN);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::YV12, VIDEO_FORMAT_YV12);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::YV16, VIDEO_FORMAT_YV16);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::I420, VIDEO_FORMAT_I420);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::YV12A, VIDEO_FORMAT_YV12A);
|
| +#if defined(VIDEO_HOLE)
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::HOLE, VIDEO_FORMAT_HOLE);
|
| +#endif
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format,
|
| + VideoFrame::NATIVE_TEXTURE,
|
| + VIDEO_FORMAT_NATIVE_TEXTURE);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::YV12J, VIDEO_FORMAT_YV12J);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::NV12, VIDEO_FORMAT_NV12);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format, VideoFrame::YV24, VIDEO_FORMAT_YV24);
|
| +ASSERT_ENUM_EQ_RAW(VideoFrame::Format,
|
| + VideoFrame::FORMAT_MAX,
|
| + VIDEO_FORMAT_FORMAT_MAX);
|
| +
|
| +// VideoCodec
|
| +ASSERT_ENUM_EQ_RAW(VideoCodec, kUnknownVideoCodec, VIDEO_CODEC_UNKNOWN);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, H264);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, VC1);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, MPEG2);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, MPEG4);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, Theora);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, VP8);
|
| +ASSERT_ENUM_EQ(VideoCodec, kCodec, VIDEO_CODEC_, VP9);
|
| +ASSERT_ENUM_EQ_RAW(VideoCodec, kVideoCodecMax, VIDEO_CODEC_Max);
|
| +
|
| +// VideoCodecProfile
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + VIDEO_CODEC_PROFILE_UNKNOWN);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + VIDEO_CODEC_PROFILE_MIN);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, H264PROFILE_MIN);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, H264PROFILE_BASELINE);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, H264PROFILE_MAIN);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, H264PROFILE_EXTENDED);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, H264PROFILE_HIGH);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_HIGH10PROFILE);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_HIGH422PROFILE);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_HIGH444PREDICTIVEPROFILE);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_SCALABLEBASELINE);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_SCALABLEHIGH);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_STEREOHIGH);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + H264PROFILE_MULTIVIEWHIGH);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, H264PROFILE_MAX);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, VP8PROFILE_MIN);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, VP8PROFILE_ANY);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, VP8PROFILE_MAX);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, VP9PROFILE_MIN);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, VP9PROFILE_ANY);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile, , VIDEO_CODEC_PROFILE_, VP9PROFILE_MAX);
|
| +ASSERT_ENUM_EQ(VideoCodecProfile,
|
| + ,
|
| + VIDEO_CODEC_PROFILE_,
|
| + VIDEO_CODEC_PROFILE_MAX);
|
|
|
| // static
|
| MediaDecoderBufferPtr TypeConverter<MediaDecoderBufferPtr,
|
| @@ -219,12 +302,12 @@ scoped_refptr<media::DecoderBuffer> TypeConverter<
|
| AudioDecoderConfigPtr
|
| TypeConverter<AudioDecoderConfigPtr, media::AudioDecoderConfig>::Convert(
|
| const media::AudioDecoderConfig& input) {
|
| - mojo::AudioDecoderConfigPtr config(mojo::AudioDecoderConfig::New());
|
| - config->codec = static_cast<mojo::AudioCodec>(input.codec());
|
| + AudioDecoderConfigPtr config(AudioDecoderConfig::New());
|
| + config->codec = static_cast<AudioCodec>(input.codec());
|
| config->sample_format =
|
| - static_cast<mojo::SampleFormat>(input.sample_format());
|
| + static_cast<SampleFormat>(input.sample_format());
|
| config->channel_layout =
|
| - static_cast<mojo::ChannelLayout>(input.channel_layout());
|
| + static_cast<ChannelLayout>(input.channel_layout());
|
| config->samples_per_second = input.samples_per_second();
|
| if (input.extra_data()) {
|
| std::vector<uint8> data(input.extra_data(),
|
| @@ -255,4 +338,43 @@ TypeConverter<media::AudioDecoderConfig, AudioDecoderConfigPtr>::Convert(
|
| return config;
|
| }
|
|
|
| +// static
|
| +VideoDecoderConfigPtr
|
| +TypeConverter<VideoDecoderConfigPtr, media::VideoDecoderConfig>::Convert(
|
| + const media::VideoDecoderConfig& input) {
|
| + VideoDecoderConfigPtr config(VideoDecoderConfig::New());
|
| + config->codec = static_cast<VideoCodec>(input.codec());
|
| + config->profile = static_cast<VideoCodecProfile>(input.profile());
|
| + config->format = static_cast<VideoFormat>(input.format());
|
| + config->coded_size = Size::From(input.coded_size());
|
| + config->visible_rect = Rect::From(input.visible_rect());
|
| + config->natural_size = Size::From(input.natural_size());
|
| + if (input.extra_data()) {
|
| + std::vector<uint8> data(input.extra_data(),
|
| + input.extra_data() + input.extra_data_size());
|
| + config->extra_data.Swap(&data);
|
| + }
|
| + config->is_encrypted = input.is_encrypted();
|
| + return config.Pass();
|
| +}
|
| +
|
| +// static
|
| +media::VideoDecoderConfig
|
| +TypeConverter<media::VideoDecoderConfig, VideoDecoderConfigPtr>::Convert(
|
| + const VideoDecoderConfigPtr& input) {
|
| + media::VideoDecoderConfig config;
|
| + config.Initialize(
|
| + static_cast<media::VideoCodec>(input->codec),
|
| + static_cast<media::VideoCodecProfile>(input->profile),
|
| + static_cast<media::VideoFrame::Format>(input->format),
|
| + input->coded_size.To<gfx::Size>(),
|
| + input->visible_rect.To<gfx::Rect>(),
|
| + input->natural_size.To<gfx::Size>(),
|
| + input->extra_data.size() ? &input->extra_data.front() : NULL,
|
| + input->extra_data.size(),
|
| + input->is_encrypted,
|
| + false);
|
| + return config;
|
| +}
|
| +
|
| } // namespace mojo
|
|
|