summaryrefslogtreecommitdiffstats
path: root/media/audio/audio_parameters.cc
blob: b0a691b6da616c9c5270961f993c3b1c216df72c (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
// Copyright (c) 2010 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.

#include "media/audio/audio_parameters.h"

#include "media/base/limits.h"

AudioParameters::AudioParameters()
    : format(AUDIO_PCM_LINEAR),
      channels(0),
      sample_rate(0),
      bits_per_sample(0),
      samples_per_packet(0) {
}

AudioParameters::AudioParameters(Format format, int channels,
                                 int sample_rate, int bits_per_sample,
                                 int samples_per_packet)
    : format(format),
      channels(channels),
      sample_rate(sample_rate),
      bits_per_sample(bits_per_sample),
      samples_per_packet(samples_per_packet) {
}

bool AudioParameters::IsValid() const {
  return (format >= 0) && (format < AUDIO_LAST_FORMAT) &&
      (channels > 0) && (channels <= media::Limits::kMaxChannels) &&
      (sample_rate > 0) && (sample_rate <= media::Limits::kMaxSampleRate) &&
      (bits_per_sample > 0) &&
      (bits_per_sample <= media::Limits::kMaxBitsPerSample) &&
      (samples_per_packet > 0) &&
      (samples_per_packet <= media::Limits::kMaxSamplesPerPacket);
}

int AudioParameters::GetPacketSize() const {
  return samples_per_packet * channels * bits_per_sample / 8;
}