text: /*
   *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
   *
   *  Use of this source code is governed by a BSD-style license
   *  that can be found in the LICENSE file in the root of the source
   *  tree. An additional intellectual property rights grant can be found
   *  in the file PATENTS.  All contributing project authors may
   *  be found in the AUTHORS file in the root of the source tree.
   */
  
  #ifndef WEBRTC_MODULES_UTILITY_SOURCE_CODER_H_
  #define WEBRTC_MODULES_UTILITY_SOURCE_CODER_H_
  
  #include "webrtc/base/scoped_ptr.h"
  #include "webrtc/common_types.h"
  #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
  #include "webrtc/typedefs.h"
  
  namespace webrtc {
  class AudioFrame;
  
  class AudioCoder : public AudioPacketizationCallback
  {
  public:
      AudioCoder(uint32_t instanceID);
      ~AudioCoder();
  
      int32_t SetEncodeCodec(
          const CodecInst& codecInst,
          ACMAMRPackingFormat amrFormat = AMRBandwidthEfficient);
  
      int32_t SetDecodeCodec(
          const CodecInst& codecInst,
          ACMAMRPackingFormat amrFormat = AMRBandwidthEfficient);
  
      int32_t Decode(AudioFrame& decodedAudio, uint32_t sampFreqHz,
                     const int8_t* incomingPayload, size_t payloadLength);
  
      int32_t PlayoutData(AudioFrame& decodedAudio, uint16_t& sampFreqHz);
  
      int32_t Encode(const AudioFrame& audio, int8_t* encodedData,
                     size_t& encodedLengthInBytes);
  
  protected:
      virtual int32_t SendData(
          FrameType frameType,
          uint8_t payloadType,
          uint32_t timeStamp,
          const uint8_t* payloadData,
          size_t payloadSize,
          const RTPFragmentationHeader* fragmentation) OVERRIDE;
  
  private:
   rtc::scoped_ptr<AudioCodingModule> _acm;
  
      CodecInst _receiveCodec;
  
      uint32_t _encodeTimestamp;
      int8_t*  _encodedData;
      size_t _encodedLengthInBytes;
  
      uint32_t _decodeTimestamp;
  };
  }  // namespace webrtc
  
  #endif // WEBRTC_MODULES_UTILITY_SOURCE_CODER_H_
  