Print Preview: Refactoring print/cancel button and print summary.
[chromium-blink-merge.git] / media / audio / audio_parameters.cc
blob029f8314adfeb777c2686f52f9945a66ac94369e
1 // Copyright (c) 2011 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.
5 #include "media/audio/audio_parameters.h"
7 #include "media/base/limits.h"
9 AudioParameters::AudioParameters()
10 : format(AUDIO_PCM_LINEAR),
11 channel_layout(CHANNEL_LAYOUT_NONE),
12 sample_rate(0),
13 bits_per_sample(0),
14 samples_per_packet(0),
15 channels(0) {
18 AudioParameters::AudioParameters(const media::AudioDecoderConfig& config)
19 : format(AUDIO_PCM_LINEAR),
20 channel_layout(config.channel_layout),
21 sample_rate(config.sample_rate),
22 bits_per_sample(config.bits_per_channel),
23 samples_per_packet(0),
24 channels(ChannelLayoutToChannelCount(config.channel_layout)) {
27 AudioParameters::AudioParameters(Format format, ChannelLayout channel_layout,
28 int sample_rate, int bits_per_sample,
29 int samples_per_packet)
30 : format(format),
31 channel_layout(channel_layout),
32 sample_rate(sample_rate),
33 bits_per_sample(bits_per_sample),
34 samples_per_packet(samples_per_packet),
35 channels(ChannelLayoutToChannelCount(channel_layout)) {
38 bool AudioParameters::IsValid() const {
39 return (format >= 0) && (format < AUDIO_LAST_FORMAT) &&
40 (channels > 0) && (channels <= media::Limits::kMaxChannels) &&
41 (sample_rate > 0) && (sample_rate <= media::Limits::kMaxSampleRate) &&
42 (bits_per_sample > 0) &&
43 (bits_per_sample <= media::Limits::kMaxBitsPerSample) &&
44 (samples_per_packet > 0) &&
45 (samples_per_packet <= media::Limits::kMaxSamplesPerPacket);
48 int AudioParameters::GetPacketSize() const {
49 return samples_per_packet * channels * bits_per_sample / 8;
52 int AudioParameters::GetBytesPerSecond() const {
53 return sample_rate * channels * bits_per_sample / 8;
56 bool AudioParameters::Compare::operator()(
57 const AudioParameters& a,
58 const AudioParameters& b) const {
59 if (a.format < b.format)
60 return true;
61 if (a.format > b.format)
62 return false;
63 if (a.channels < b.channels)
64 return true;
65 if (a.channels > b.channels)
66 return false;
67 if (a.sample_rate < b.sample_rate)
68 return true;
69 if (a.sample_rate > b.sample_rate)
70 return false;
71 if (a.bits_per_sample < b.bits_per_sample)
72 return true;
73 if (a.bits_per_sample > b.bits_per_sample)
74 return false;
75 return a.samples_per_packet < b.samples_per_packet;