1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "media/mojo/mojom/audio_decoder_config_mojom_traits.h" 6 7 #include "mojo/public/cpp/base/time_mojom_traits.h" 8 9 namespace mojo { 10 11 // static 12 bool StructTraits<media::mojom::AudioDecoderConfigDataView, 13 media::AudioDecoderConfig>:: Read(media::mojom::AudioDecoderConfigDataView input,media::AudioDecoderConfig * output)14 Read(media::mojom::AudioDecoderConfigDataView input, 15 media::AudioDecoderConfig* output) { 16 media::AudioCodec codec; 17 if (!input.ReadCodec(&codec)) 18 return false; 19 20 media::SampleFormat sample_format; 21 if (!input.ReadSampleFormat(&sample_format)) 22 return false; 23 24 media::ChannelLayout channel_layout; 25 if (!input.ReadChannelLayout(&channel_layout)) 26 return false; 27 28 std::vector<uint8_t> extra_data; 29 if (!input.ReadExtraData(&extra_data)) 30 return false; 31 32 media::EncryptionScheme encryption_scheme; 33 if (!input.ReadEncryptionScheme(&encryption_scheme)) 34 return false; 35 36 base::TimeDelta seek_preroll; 37 if (!input.ReadSeekPreroll(&seek_preroll)) 38 return false; 39 40 media::AudioCodecProfile profile; 41 if (!input.ReadProfile(&profile)) 42 return false; 43 44 output->Initialize(codec, sample_format, channel_layout, 45 input.samples_per_second(), extra_data, encryption_scheme, 46 seek_preroll, input.codec_delay()); 47 output->set_profile(profile); 48 return output->IsValidConfig(); 49 } 50 51 } // namespace mojo 52