diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c
index b44120fd859e50902875fa5ec319185025ce02ce..db3f013f323b7acceab8968c7e4bbe41caa47b56 100644
--- a/libavcodec/g729dec.c
+++ b/libavcodec/g729dec.c
@@ -510,6 +510,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr,
 
         /* Round pitch delay to nearest (used everywhere except ff_acelp_interpolate). */
         pitch_delay_int[i]  = (pitch_delay_3x + 1) / 3;
+        if (pitch_delay_int[i] > PITCH_DELAY_MAX) {
+            av_log(avctx, AV_LOG_WARNING, "pitch_delay_int %d is too large\n", pitch_delay_int[i]);
+            pitch_delay_int[i] = PITCH_DELAY_MAX;
+        }
 
         if (frame_erasure) {
             ctx->rand_value = g729_prng(ctx->rand_value);