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