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/audio_encoder_config_mojom_traits.h"
9 #include "base/numerics/safe_conversions.h"
10 #include "media/base/limits.h"
11 #include "mojo/public/cpp/base/time_mojom_traits.h"
16 media::mojom::AacOutputFormat EnumTraits<media::mojom::AacOutputFormat,
17 media::AudioEncoder::AacOutputFormat>::
18 ToMojom(media::AudioEncoder::AacOutputFormat input) {
20 case media::AudioEncoder::AacOutputFormat::ADTS:
21 return media::mojom::AacOutputFormat::kADTS;
22 case media::AudioEncoder::AacOutputFormat::AAC:
23 return media::mojom::AacOutputFormat::kAAC;
25 NOTREACHED_NORETURN();
29 bool EnumTraits<media::mojom::AacOutputFormat,
30 media::AudioEncoder::AacOutputFormat>::
31 FromMojom(media::mojom::AacOutputFormat format,
32 media::AudioEncoder::AacOutputFormat* output) {
34 case media::mojom::AacOutputFormat::kADTS:
35 *output = media::AudioEncoder::AacOutputFormat::ADTS;
37 case media::mojom::AacOutputFormat::kAAC:
38 *output = media::AudioEncoder::AacOutputFormat::AAC;
41 NOTREACHED_NORETURN();
45 bool StructTraits<media::mojom::AacAudioEncoderConfigDataView,
46 media::AudioEncoder::AacOptions>::
47 Read(media::mojom::AacAudioEncoderConfigDataView input,
48 media::AudioEncoder::AacOptions* output) {
49 media::AudioEncoder::AacOutputFormat format;
50 if (!input.ReadFormat(&format)) {
54 output->format = format;
59 bool StructTraits<media::mojom::AudioEncoderConfigDataView,
60 media::AudioEncoderConfig>::
61 Read(media::mojom::AudioEncoderConfigDataView input,
62 media::AudioEncoderConfig* output) {
63 media::AudioCodec codec;
64 if (!input.ReadCodec(&codec))
66 output->codec = codec;
68 if (input.sample_rate() < media::limits::kMinSampleRate ||
69 input.sample_rate() > media::limits::kMaxSampleRate)
71 output->sample_rate = input.sample_rate();
73 if (input.bitrate() > 0)
74 output->bitrate = base::saturated_cast<int>(input.bitrate());
76 if (input.channel_count() > media::limits::kMaxChannels)
78 output->channels = input.channel_count();
80 media::AudioEncoder::AacOptions aac;
81 if (!input.ReadAac(&aac)) {