OSDN Git Service

g723_1: save/restore excitation with offset to store LPC history
authorKostya Shishkov <kostya.shishkov@gmail.com>
Thu, 2 Aug 2012 05:42:44 +0000 (07:42 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 3 Aug 2012 05:07:06 +0000 (07:07 +0200)
The same buffer with saved data is used later in LPC reconstruction, so
it should have some head space for LPC history.

libavcodec/g723_1.c

index df14a46..11e90e8 100644 (file)
@@ -1071,7 +1071,7 @@ static int g723_1_decode_frame(AVCodecContext *avctx, void *data,
             vector_ptr = p->excitation + PITCH_MAX;
 
             /* Save the excitation */
-            memcpy(p->audio, vector_ptr, FRAME_LEN * sizeof(*p->audio));
+            memcpy(p->audio + LPC_ORDER, vector_ptr, FRAME_LEN * sizeof(*p->audio));
 
             p->interp_index = comp_interp_index(p, p->pitch_lag[1],
                                                 &p->sid_gain, &p->cur_gain);
@@ -1086,7 +1086,7 @@ static int g723_1_decode_frame(AVCodecContext *avctx, void *data,
             /* Restore the original excitation */
             memcpy(p->excitation, p->prev_excitation,
                    PITCH_MAX * sizeof(*p->excitation));
-            memcpy(vector_ptr, p->audio, FRAME_LEN * sizeof(*vector_ptr));
+            memcpy(vector_ptr, p->audio + LPC_ORDER, FRAME_LEN * sizeof(*vector_ptr));
 
             /* Peform pitch postfiltering */
             if (p->postfilter)