}
GST_DEBUG_OBJECT (avi, "stream name: %s", stream->name);
break;
+ case GST_RIFF_IDIT:
+ gst_avi_demux_parse_idit (avi, sub);
+ break;
default:
if (tag == GST_MAKE_FOURCC ('i', 'n', 'd', 'x') ||
tag == GST_MAKE_FOURCC ('i', 'x', '0' + avi->num_streams / 10,
static guint
gst_avi_demux_index_last (GstAviDemux * avi, GstAviStream * stream)
{
- return stream->idx_n - 1;
+ return stream->idx_n;
}
/* find a previous entry in the index with the given flags */
}
static void
-gst_avi_demux_add_date_tag (GstAviDemux * avi, gint y, gint m, gint d)
+gst_avi_demux_add_date_tag (GstAviDemux * avi, gint y, gint m, gint d,
+ gint h, gint min, gint s)
{
GDate *date;
+ GstDateTime *dt;
+
date = g_date_new_dmy (d, m, y);
if (!g_date_valid (date)) {
/* bogus date */
return;
}
+ dt = gst_date_time_new_local_time (y, m, d, h, min, s);
+
if (avi->globaltags == NULL)
avi->globaltags = gst_tag_list_new ();
gst_tag_list_add (avi->globaltags, GST_TAG_MERGE_REPLACE, GST_TAG_DATE, date,
NULL);
g_date_free (date);
+ if (dt) {
+ gst_tag_list_add (avi->globaltags, GST_TAG_MERGE_REPLACE, GST_TAG_DATE_TIME,
+ dt, NULL);
+ gst_date_time_unref (dt);
+ }
}
static void
GST_WARNING_OBJECT (avi, "Failed to parse IDIT tag");
return;
}
- gst_avi_demux_add_date_tag (avi, y, m, d);
+ gst_avi_demux_add_date_tag (avi, y, m, d, 0, 0, 0);
}
static gint
return;
}
month = get_month_num (monthstr, strlen (monthstr));
- gst_avi_demux_add_date_tag (avi, year, month, day);
+ gst_avi_demux_add_date_tag (avi, year, month, day, hour, min, sec);
}
static void
new_entry = old_entry + 1;
/* see if we reached the end */
- if (new_entry > stream->stop_entry) {
+ if (new_entry >= stream->stop_entry) {
if (avi->segment.rate < 0.0) {
if (stream->step_entry == stream->start_entry) {
/* we stepped all the way to the start, eos */