goto next_lace;
}
- GST_BUFFER_TIMESTAMP (sub) = lace_time;
+ if (!stream->dts_only)
+ GST_BUFFER_PTS (sub) = lace_time;
+ else
+ GST_BUFFER_DTS (sub) = lace_time;
if (GST_CLOCK_TIME_IS_VALID (lace_time)) {
GstClockTime last_stop_end;
stream->pos = GST_BUFFER_PTS (sub);
if (GST_BUFFER_DURATION_IS_VALID (sub))
stream->pos += GST_BUFFER_DURATION (sub);
+ } else if (GST_BUFFER_DTS_IS_VALID (sub)) {
+ stream->pos = GST_BUFFER_DTS (sub);
+ if (GST_BUFFER_DURATION_IS_VALID (sub))
+ stream->pos += GST_BUFFER_DURATION (sub);
}
ret = gst_pad_push (stream->pad, sub);
memcpy (vids, data, size);
}
+ context->dts_only = TRUE; /* VFW files only store DTS */
+
/* little-endian -> byte-order */
vids->size = GUINT32_FROM_LE (vids->size);
vids->width = GUINT32_FROM_LE (vids->width);
/* any alignment we need our output buffers to have */
gint alignment;
+
+ /* for compatibility with VFW files, where timestamp represents DTS */
+ gboolean dts_only;
};
typedef struct _GstMatroskaTrackVideoContext {