1// Copyright (c) 2012 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.
4
5#include "remoting/codec/audio_decoder_verbatim.h"
6
7#include "base/logging.h"
8#include "remoting/proto/audio.pb.h"
9
10namespace remoting {
11
12AudioDecoderVerbatim::AudioDecoderVerbatim() {
13}
14
15AudioDecoderVerbatim::~AudioDecoderVerbatim() {
16}
17
18scoped_ptr<AudioPacket> AudioDecoderVerbatim::Decode(
19    scoped_ptr<AudioPacket> packet) {
20  // Return a null scoped_ptr if we get a corrupted packet.
21  if ((packet->encoding() != AudioPacket::ENCODING_RAW) ||
22      (packet->data_size() != 1) ||
23      (packet->sampling_rate() == AudioPacket::SAMPLING_RATE_INVALID) ||
24      (packet->bytes_per_sample() != AudioPacket::BYTES_PER_SAMPLE_2) ||
25      (packet->channels() != AudioPacket::CHANNELS_STEREO) ||
26      (packet->data(0).size() %
27       (AudioPacket::CHANNELS_STEREO * AudioPacket::BYTES_PER_SAMPLE_2) != 0)) {
28    LOG(WARNING) << "Verbatim decoder received an invalid packet.";
29    return scoped_ptr<AudioPacket>();
30  }
31  return packet.Pass();
32}
33
34}  // namespace remoting
35