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