Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1386)

Unified Diff: media/mojo/services/media_type_converters.cc

Issue 551963004: media: scaffolding and plumbing for MojoRenderer{Impl, Service} (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase + DEPS Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 a6b0fad9723b33dcc965a92217a18bcfa00c0d21..156440e7efd8b6f8aa876c9b97f42696b57effe2 100644
--- a/media/mojo/services/media_type_converters.cc
+++ b/media/mojo/services/media_type_converters.cc
@@ -5,19 +5,124 @@
#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/mojo/interfaces/demuxer_stream.mojom.h"
#include "mojo/public/cpp/system/data_pipe.h"
namespace mojo {
-#define ASSERT_ENUM_VALUES_EQUAL(value) \
- COMPILE_ASSERT(media::BUFFERING_##value == \
- static_cast<media::BufferingState>(BUFFERING_STATE_##value), \
- value##_enum_value_matches)
+#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)
-ASSERT_ENUM_VALUES_EQUAL(HAVE_NOTHING);
-ASSERT_ENUM_VALUES_EQUAL(HAVE_ENOUGH);
+// 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(AudioCodec, kCodec, AUDIO_CODEC_, AAC);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, MP3);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, PCM);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, Vorbis);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, FLAC);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, AMR_NB);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, PCM_MULAW);
+ASSERT_ENUM_EQ(AudioCodec, kCodec, AUDIO_CODEC_, GSM_MS);
+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);
+
+// ChannelLayout.
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _NONE);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _UNSUPPORTED);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _MONO);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _STEREO);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _2_1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _SURROUND);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _4_0);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _2_2);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _QUAD);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _5_0);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _5_1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _5_0_BACK);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _5_1_BACK);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _7_0);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _7_1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _7_1_WIDE);
+ASSERT_ENUM_EQ(ChannelLayout,
+ CHANNEL_LAYOUT,
+ CHANNEL_LAYOUT_k,
+ _STEREO_DOWNMIX);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _2POINT1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _3_1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _4_1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _6_0);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _6_0_FRONT);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _HEXAGONAL);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _6_1);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _6_1_BACK);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _6_1_FRONT);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _7_0_FRONT);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _7_1_WIDE_BACK);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _OCTAGONAL);
+ASSERT_ENUM_EQ(ChannelLayout, CHANNEL_LAYOUT, CHANNEL_LAYOUT_k, _DISCRETE);
+ASSERT_ENUM_EQ(ChannelLayout,
+ CHANNEL_LAYOUT,
+ CHANNEL_LAYOUT_k,
+ _STEREO_AND_KEYBOARD_MIC);
+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(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, U8);
+ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, S16);
+ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, S32);
+ASSERT_ENUM_EQ(SampleFormat, kSampleFormat, SAMPLE_FORMAT_, F32);
+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 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);
// static
MediaDecoderBufferPtr TypeConverter<MediaDecoderBufferPtr,
@@ -102,4 +207,43 @@ scoped_refptr<media::DecoderBuffer> TypeConverter<
return buffer;
}
+// static
+AudioDecoderConfigPtr
+TypeConverter<AudioDecoderConfigPtr, media::AudioDecoderConfig>::Convert(
+ const media::AudioDecoderConfig& input) {
+ mojo::AudioDecoderConfigPtr config(mojo::AudioDecoderConfig::New());
+ config->codec = static_cast<mojo::AudioCodec>(input.codec());
+ config->sample_format =
+ static_cast<mojo::SampleFormat>(input.sample_format());
+ config->channel_layout =
+ static_cast<mojo::ChannelLayout>(input.channel_layout());
+ config->samples_per_second = input.samples_per_second();
+ if (input.extra_data()) {
+ std::vector<uint8> data(input.extra_data(),
+ input.extra_data() + input.extra_data_size());
+ config->extra_data.Swap(&data);
+ }
+ config->seek_preroll_usec = input.seek_preroll().InMicroseconds();
+ config->codec_delay = input.codec_delay();
+ return config.Pass();
+}
+
+// static
+media::AudioDecoderConfig
+TypeConverter<media::AudioDecoderConfig, AudioDecoderConfigPtr>::Convert(
+ const AudioDecoderConfigPtr& input) {
+ media::AudioDecoderConfig config;
+ config.Initialize(static_cast<media::AudioCodec>(input->codec),
+ static_cast<media::SampleFormat>(input->sample_format),
+ static_cast<media::ChannelLayout>(input->channel_layout),
+ input->samples_per_second,
+ input->extra_data.storage().data(),
+ input->extra_data.storage().size(),
+ false,
+ false,
+ base::TimeDelta::FromMicroseconds(input->seek_preroll_usec),
+ input->codec_delay);
+ return config;
+}
+
} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698