13f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org/*
23f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
33f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *
43f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *  Use of this source code is governed by a BSD-style license
53f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *  that can be found in the LICENSE file in the root of the source
63f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *  tree. An additional intellectual property rights grant can be found
73f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *  in the file PATENTS.  All contributing project authors may
83f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
93f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org */
103f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
11ed0b4fb2f28fa291e726fc1cf6852611f2176392turaj@webrtc.org#ifndef WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_CNG_H_
12ed0b4fb2f28fa291e726fc1cf6852611f2176392turaj@webrtc.org#define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_CNG_H_
133f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
14ed0b4fb2f28fa291e726fc1cf6852611f2176392turaj@webrtc.org#include "webrtc/modules/audio_coding/main/acm2/acm_generic_codec.h"
153f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
163f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org// forward declaration
173f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgstruct WebRtcCngEncInst;
183f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgstruct WebRtcCngDecInst;
193f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
203f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgnamespace webrtc {
213f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
220a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.orgnamespace acm2 {
230a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.org
243f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgclass ACMCNG: public ACMGenericCodec {
253f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org public:
263f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  explicit ACMCNG(int16_t codec_id);
273f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  ~ACMCNG();
283f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
293f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  // for FEC
303f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  ACMGenericCodec* CreateInstance(void);
313f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
323f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t InternalEncode(uint8_t* bitstream,
333f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org                         int16_t* bitstream_len_byte);
343f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
353f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t InternalInitEncoder(WebRtcACMCodecParams *codec_params);
363f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
373f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org protected:
3847b4b9d94cafb22e19bc8a6e6ca83b0568dcb973henrik.lundin@webrtc.org  void DestructEncoderSafe() OVERRIDE
3947b4b9d94cafb22e19bc8a6e6ca83b0568dcb973henrik.lundin@webrtc.org      EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
403f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
413f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t InternalCreateEncoder();
423f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
433f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t EnableDTX() {
443f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org    return -1;
453f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  }
463f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
473f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t DisableDTX() {
483f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org    return -1;
493f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  }
503f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
513f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  WebRtcCngEncInst* encoder_inst_ptr_;
523f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  uint16_t samp_freq_hz_;
533f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org};
543f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
550a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.org}  // namespace acm2
560a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.org
573f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org}  // namespace webrtc
583f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
59ed0b4fb2f28fa291e726fc1cf6852611f2176392turaj@webrtc.org#endif  // WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_CNG_H_
60