1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 2470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/****************************************************************** 12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com iLBC Speech Coder ANSI-C Source Code 14470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com WebRtcIlbcfix_GainDequant.c 16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com******************************************************************/ 18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#include "defines.h" 20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#include "constants.h" 21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/*----------------------------------------------------------------* 23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * decoder for quantized gains in the gain-shape coding of 24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * residual 25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *---------------------------------------------------------------*/ 26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 270946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgint16_t WebRtcIlbcfix_GainDequant( 28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com /* (o) quantized gain value (Q14) */ 290946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org int16_t index, /* (i) quantization index */ 300946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org int16_t maxIn, /* (i) maximum of unquantized gain (Q14) */ 310946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org int16_t stage /* (i) The stage of the search */ 32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com ){ 330946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org int16_t scale; 340946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org const int16_t *gain; 35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com /* obtain correct scale factor */ 37470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com scale=WEBRTC_SPL_ABS_W16(maxIn); 39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com scale = WEBRTC_SPL_MAX(1638, scale); /* if lower than 0.1, set it to 0.1 */ 40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 41470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com /* select the quantization table and return the decoded value */ 42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com gain = WebRtcIlbcfix_kGain[stage]; 43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 44ba97ea69f0b8bb73a837869211627b705eac8f98bjornv@webrtc.org return (int16_t)((scale * gain[index] + 8192) >> 14); 45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com} 46