Commit 50cad256 authored by Vladimir Voroshilov's avatar Vladimir Voroshilov Committed by Michael Niedermayer

Frame erasure support for pitch delay decoding

parent d1a643e7
...@@ -306,7 +306,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, ...@@ -306,7 +306,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
gc_1st_index = get_bits(&gb, format.gc_1st_index_bits); gc_1st_index = get_bits(&gb, format.gc_1st_index_bits);
gc_2nd_index = get_bits(&gb, format.gc_2nd_index_bits); gc_2nd_index = get_bits(&gb, format.gc_2nd_index_bits);
if(!i) { if (frame_erasure)
pitch_delay_3x = 3 * ctx->pitch_delay_int_prev;
else if(!i) {
if (bad_pitch) if (bad_pitch)
pitch_delay_3x = 3 * ctx->pitch_delay_int_prev; pitch_delay_3x = 3 * ctx->pitch_delay_int_prev;
else else
...@@ -348,6 +350,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, ...@@ -348,6 +350,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
( voicing && frame_erasure) ? 0 : ctx->gain_code, ( voicing && frame_erasure) ? 0 : ctx->gain_code,
1 << 13, 14, SUBFRAME_SIZE); 1 << 13, 14, SUBFRAME_SIZE);
if (frame_erasure)
ctx->pitch_delay_int_prev = FFMIN(ctx->pitch_delay_int_prev + 1, PITCH_DELAY_MAX);
else
ctx->pitch_delay_int_prev = pitch_delay_int; ctx->pitch_delay_int_prev = pitch_delay_int;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment