1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/mojo/mojom/encoded_audio_buffer_traits.h"
7 #include "base/time/time.h"
8 #include "mojo/public/cpp/base/time_mojom_traits.h"
13 bool StructTraits<media::mojom::EncodedAudioBufferDataView,
14 media::EncodedAudioBuffer>::
15 Read(media::mojom::EncodedAudioBufferDataView input,
16 media::EncodedAudioBuffer* output) {
17 media::AudioParameters params;
18 if (!input.ReadParams(¶ms))
22 if (!input.ReadTimestamp(&ts))
24 base::TimeTicks timestamp = ts + base::TimeTicks();
26 base::TimeDelta duration;
27 if (!input.ReadDuration(&duration))
30 mojo::ArrayDataView<uint8_t> data_view;
31 input.GetDataDataView(&data_view);
32 if (data_view.is_null())
35 size_t encoded_data_size = data_view.size();
36 std::unique_ptr<uint8_t[]> encoded_data(new uint8_t[encoded_data_size]);
37 memcpy(encoded_data.get(), data_view.data(), encoded_data_size);
39 *output = media::EncodedAudioBuffer(params, std::move(encoded_data),
40 encoded_data_size, timestamp, duration);