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_AMRWB_H_
12ed0b4fb2f28fa291e726fc1cf6852611f2176392turaj@webrtc.org#define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_AMRWB_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 AMRWB_encinst_t_;
183f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgstruct AMRWB_decinst_t_;
193f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
203f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgnamespace webrtc {
213f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
220a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.orgnamespace acm2 {
230a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.org
243f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.orgclass ACMAMRwb : public ACMGenericCodec {
253f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org public:
263f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  explicit ACMAMRwb(int16_t codec_id);
273f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  ~ACMAMRwb();
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, int16_t* bitstream_len_byte);
333f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
343f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t InternalInitEncoder(WebRtcACMCodecParams* codec_params);
353f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
363f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t SetAMRwbEncoderPackingFormat(
373f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org      const ACMAMRPackingFormat packing_format);
383f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
393f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  ACMAMRPackingFormat AMRwbEncoderPackingFormat() const;
403f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
413f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t SetAMRwbDecoderPackingFormat(
423f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org      const ACMAMRPackingFormat packing_format);
433f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
443f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  ACMAMRPackingFormat AMRwbDecoderPackingFormat() const;
453f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
463f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org protected:
473f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  void DestructEncoderSafe();
483f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
493f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t InternalCreateEncoder();
503f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
513f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t SetBitRateSafe(const int32_t rate);
523f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
533f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t EnableDTX();
543f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
553f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t DisableDTX();
563f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
573f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  AMRWB_encinst_t_* encoder_inst_ptr_;
583f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
593f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t encoding_mode_;
603f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  int16_t encoding_rate_;
613f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org  ACMAMRPackingFormat encoder_packing_format_;
623f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org};
633f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
640a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.org}  // namespace acm2
650a1c75a50d10621f70d5921c5b8b9c0eb144bb42turaj@webrtc.org
663f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org}  // namespace webrtc
673f39c00d9875d7e09062725757b789f4da375ef9turaj@webrtc.org
68ed0b4fb2f28fa291e726fc1cf6852611f2176392turaj@webrtc.org#endif  // WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_AMRWB_H_
69