summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/mojom/audio_decoder_config_mojom_traits.h
blob: 3d10781ff7578e3c5049f0543b15da0fe089438b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_MOJO_MOJOM_AUDIO_DECODER_CONFIG_MOJOM_TRAITS_H_
#define MEDIA_MOJO_MOJOM_AUDIO_DECODER_CONFIG_MOJOM_TRAITS_H_

#include "media/base/audio_decoder_config.h"
#include "media/base/ipc/media_param_traits.h"
#include "media/mojo/mojom/media_types.mojom.h"

namespace mojo {

template <>
struct StructTraits<media::mojom::AudioDecoderConfigDataView,
                    media::AudioDecoderConfig> {
  static media::AudioCodec codec(const media::AudioDecoderConfig& input) {
    return input.codec();
  }

  static media::SampleFormat sample_format(
      const media::AudioDecoderConfig& input) {
    return input.sample_format();
  }

  static media::ChannelLayout channel_layout(
      const media::AudioDecoderConfig& input) {
    return input.channel_layout();
  }

  static int samples_per_second(const media::AudioDecoderConfig& input) {
    return input.samples_per_second();
  }

  static const std::vector<uint8_t>& extra_data(
      const media::AudioDecoderConfig& input) {
    return input.extra_data();
  }

  static media::EncryptionScheme encryption_scheme(
      const media::AudioDecoderConfig& input) {
    return input.encryption_scheme();
  }

  static base::TimeDelta seek_preroll(const media::AudioDecoderConfig& input) {
    return input.seek_preroll();
  }

  static int codec_delay(const media::AudioDecoderConfig& input) {
    return input.codec_delay();
  }

  static media::AudioCodecProfile profile(
      const media::AudioDecoderConfig& input) {
    return input.profile();
  }

  static media::ChannelLayout target_output_channel_layout(
      const media::AudioDecoderConfig& input) {
    return input.target_output_channel_layout();
  }

  static bool should_discard_decoder_delay(
      const media::AudioDecoderConfig& input) {
    return input.should_discard_decoder_delay();
  }

  static bool Read(media::mojom::AudioDecoderConfigDataView input,
                   media::AudioDecoderConfig* output);
};

}  // namespace mojo

#endif  // MEDIA_MOJO_MOJOM_AUDIO_DECODER_CONFIG_MOJOM_TRAITS_H_