Author: superdump
Date: Mon Dec 10 16:42:32 2007
New Revision: 1542
Log:
Correct index used for pitch gain and fixed gain factor in MODE_475
Modified:
amr/amrnbfloatdata.h
amr/amrnbfloatdec.c
Modified: amr/amrnbfloatdata.h
==============================================================================
--- amr/amrnbfloatdata.h (original)
+++ amr/amrnbfloatdata.h Mon Dec 10 16:42:32 2007
@@ -1841,7 +1841,7 @@ static const float energy_mean[8] = { 33
static const float energy_pred_fac[4] = { 0.68, 0.58, 0.34, 0.19 };
// gain table for 4.75 kbps mode
-// first index has even/odd indices for even/odd subframes
+// first index has even/odd indices for subframes 0,2/1,3
// second index is {pitch_gain, fixed_gain_factor}
static const float gains_MODE_475[512][2] = {
{0.049561, 0.031250}, {0.033081, 0.034180}, {0.175354, 0.277100}, {0.138306,
0.830566},
Modified: amr/amrnbfloatdec.c
==============================================================================
--- amr/amrnbfloatdec.c (original)
+++ amr/amrnbfloatdec.c Mon Dec 10 16:42:32 2007
@@ -1057,6 +1057,7 @@ static int amrnb_decode_frame(AVCodecCon
int i, subframe; // counters
int index = 0; // index counter (different modes
// advance through amr_prms
differently)
+ int gains_index_MODE_475 = 0; // MODE_475 gains index coded
every other subframe
enum Mode speech_mode = MODE_475; // ???
// decode the bitstream to amr parameters
@@ -1182,8 +1183,13 @@ static int amrnb_decode_frame(AVCodecCon
p->fixed_gain_factor = gains_low[p->amr_prms[index]][1];
index++;
}else {
- p->pitch_gain[4] = gains_MODE_475[p->amr_prms[index] + (
(!(subframe&1)) <<1)][0];
- p->fixed_gain_factor = gains_MODE_475[p->amr_prms[index] + (
(!(subframe&1)) <<1)][1];
+ // gain index is only coded in subframes 0,2
+ if(!(subframe&1)) {
+ gains_index_MODE_475 = p->amr_prms[index]<<1;
+ index++;
+ }
+ p->pitch_gain[4] = gains_MODE_475[gains_index_MODE_475 +
(subframe&1)][0];
+ p->fixed_gain_factor = gains_MODE_475[gains_index_MODE_475 +
(subframe&1)][1];
index++;
}
_______________________________________________
FFmpeg-soc mailing list
[email protected]
http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc