diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c
index 67dcf22..91dedfa 100644
--- a/ext/ffmpeg/gstffmpegdec.c
+++ b/ext/ffmpeg/gstffmpegdec.c
@@ -2083,17 +2083,19 @@ gst_ffmpegdec_audio_frame (GstFFMpegDec * ffmpegdec,
 
     /*
      * Timestamps:
+     * 
+     * Use the input timestamp only if there isn't a computed one (stream
+     * start, discontinuity)
      *
-     *  1) Copy input timestamp if valid
-     *  2) else interpolate from previous input timestamp
+     * The input buffer durations are different than output durations, the
+     * timestamps from input can not be used on output.
      */
-    /* always take timestamps from the input buffer if any */
-    if (GST_CLOCK_TIME_IS_VALID (dec_info->timestamp)) {
+    if (GST_CLOCK_TIME_IS_VALID (ffmpegdec->next_out)) {
+      out_timestamp = ffmpegdec->next_out;      
+    } else if (GST_CLOCK_TIME_IS_VALID (dec_info->timestamp)) {
       out_timestamp = dec_info->timestamp;
-    } else {
-      out_timestamp = ffmpegdec->next_out;
     }
-
+    
     /*
      * Duration:
      *
