Home | History | Annotate | Download | only in codec
      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 
     10 namespace remoting {
     11 
     12 AudioDecoderVerbatim::AudioDecoderVerbatim() {
     13 }
     14 
     15 AudioDecoderVerbatim::~AudioDecoderVerbatim() {
     16 }
     17 
     18 scoped_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