baseaudioencoder: TEMP; avoid some imperfect ts jitter ?
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 17 Jun 2011 09:54:08 +0000 (11:54 +0200)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 27 Aug 2011 13:47:00 +0000 (14:47 +0100)
... even when not in perfect mode ?

gst-libs/gst/audio/gstbaseaudioencoder.c

index a907198..3b4ea77 100644 (file)
@@ -500,11 +500,16 @@ gst_base_audio_encoder_finish_frame (GstBaseAudioEncoder * enc, GstBuffer * buf,
           GST_DEBUG_OBJECT (enc, "marked discont");
           priv->discont = TRUE;
         }
-        GST_LOG_OBJECT (enc, "new upstream ts %" GST_TIME_FORMAT
-            " at distance %" G_GUINT64_FORMAT, GST_TIME_ARGS (ts), distance);
-        /* re-sync to upstream ts */
-        priv->base_ts = ts;
-        priv->samples = distance;
+        if (TRUE || diff > GST_SECOND / ctx->state.rate / 2 ||
+            diff < -GST_SECOND / ctx->state.rate / 2) {
+          GST_LOG_OBJECT (enc, "new upstream ts %" GST_TIME_FORMAT
+              " at distance %" G_GUINT64_FORMAT, GST_TIME_ARGS (ts), distance);
+          /* re-sync to upstream ts */
+          priv->base_ts = ts;
+          priv->samples = distance;
+        } else {
+          GST_LOG_OBJECT (enc, "new upstream ts only introduces jitter");
+        }
       }
     }
     /* advance sample view */