[FFmpeg-cvslog] Frame erasure support for pitch delay decoding
Vladimir Voroshilov
git at videolan.org
Sat Sep 24 21:17:01 CEST 2011
ffmpeg | branch: master | Vladimir Voroshilov <voroshil at gmail.com> | Thu Jun 11 13:51:28 2009 +0700| [50cad2562522142f15ef0370df07939652c9feb3] | committer: Michael Niedermayer
Frame erasure support for pitch delay decoding
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=50cad2562522142f15ef0370df07939652c9feb3
---
libavcodec/g729dec.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c
index 42783d6..1e29a7e 100644
--- a/libavcodec/g729dec.c
+++ b/libavcodec/g729dec.c
@@ -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_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)
pitch_delay_3x = 3 * ctx->pitch_delay_int_prev;
else
@@ -348,6 +350,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
( voicing && frame_erasure) ? 0 : ctx->gain_code,
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;
}
More information about the ffmpeg-cvslog
mailing list