/*
 *  Copyright (c) 2012 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.
 */

#include "webrtc/modules/audio_coding/main/acm2/acm_red.h"

#include "webrtc/modules/audio_coding/main/acm2/acm_common_defs.h"
#include "webrtc/system_wrappers/interface/trace.h"

namespace webrtc {

namespace acm2 {

ACMRED::ACMRED(int16_t codec_id, bool enable_red)
    : ACMGenericCodec(enable_red) {
  codec_id_ = codec_id;
}

ACMRED::~ACMRED() {}

int16_t ACMRED::InternalEncode(uint8_t* /* bitstream */,
                               int16_t* /* bitstream_len_byte */) {
  // RED is never used as an encoder
  // RED has no instance
  return 0;
}

int16_t ACMRED::InternalInitEncoder(WebRtcACMCodecParams* /* codec_params */) {
  // This codec does not need initialization,
  // RED has no instance
  return 0;
}

ACMGenericCodec* ACMRED::CreateInstance(void) { return NULL; }

int16_t ACMRED::InternalCreateEncoder() {
  // RED has no instance
  return 0;
}

void ACMRED::DestructEncoderSafe() {
  // RED has no instance
}

}  // namespace acm2

}  // namespace webrtc
