decoder: propagate buffer duration downstream.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Tue, 11 Sep 2012 08:59:33 +0000 (10:59 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Tue, 11 Sep 2012 15:08:47 +0000 (17:08 +0200)
gst-libs/gst/vaapi/gstvaapidecoder.c
gst/vaapi/gstvaapidecode.c

index 148a6a2..c63bb14 100644 (file)
@@ -129,10 +129,16 @@ static inline void
 push_surface(GstVaapiDecoder *decoder, GstVaapiSurfaceProxy *proxy)
 {
     GstVaapiDecoderPrivate * const priv = decoder->priv;
+    GstClockTime duration;
 
     GST_DEBUG("queue decoded surface %" GST_VAAPI_ID_FORMAT,
               GST_VAAPI_ID_ARGS(gst_vaapi_surface_proxy_get_surface_id(proxy)));
 
+    if (priv->fps_n && priv->fps_d) {
+        /* Actual field duration is computed in vaapipostproc */
+        duration = gst_util_uint64_scale(GST_SECOND, priv->fps_d, priv->fps_n);
+        gst_vaapi_surface_proxy_set_duration(proxy, duration);
+    }
     g_queue_push_tail(priv->surfaces, proxy);
 }
 
index 7b85636..0b9643f 100644 (file)
@@ -229,6 +229,7 @@ gst_vaapidecode_step(GstVaapiDecode *decode)
             goto error_create_buffer;
 
         GST_BUFFER_TIMESTAMP(buffer) = GST_VAAPI_SURFACE_PROXY_TIMESTAMP(proxy);
+        GST_BUFFER_DURATION(buffer) = GST_VAAPI_SURFACE_PROXY_DURATION(proxy);
         gst_buffer_set_caps(buffer, GST_PAD_CAPS(decode->srcpad));
 
         if (GST_VAAPI_SURFACE_PROXY_TFF(proxy))