From 20464efc8ea14d12862720171491a4d7ff550caf Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Fri, 16 Sep 2011 13:42:53 +0100 Subject: [PATCH] dvdreadsrc: fix sector search for packed titles Some DVD titles are packed in a single set, and we need to use the correct table to map times to sectors. https://bugzilla.gnome.org/show_bug.cgi?id=659252 --- ext/dvdread/dvdreadsrc.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/ext/dvdread/dvdreadsrc.c b/ext/dvdread/dvdreadsrc.c index a46ee4cf6f..a53019f9fd 100644 --- a/ext/dvdread/dvdreadsrc.c +++ b/ext/dvdread/dvdreadsrc.c @@ -682,23 +682,21 @@ gst_dvd_read_src_get_time_for_sector (GstDvdReadSrc * src, guint sector) static gint gst_dvd_read_src_get_sector_from_time (GstDvdReadSrc * src, GstClockTime ts) { - gint sector, i, j; + gint sector, j; - if (src->vts_tmapt == NULL || src->vts_tmapt->nr_of_tmaps == 0) + if (src->vts_tmapt == NULL || src->vts_tmapt->nr_of_tmaps < src->ttn) return -1; sector = 0; - for (i = 0; i < src->vts_tmapt->nr_of_tmaps; ++i) { - for (j = 0; j < src->vts_tmapt->tmap[i].nr_of_entries; ++j) { - GstClockTime entry_time; + for (j = 0; j < src->vts_tmapt->tmap[src->ttn - 1].nr_of_entries; ++j) { + GstClockTime entry_time; - entry_time = src->vts_tmapt->tmap[i].tmu * (j + 1) * GST_SECOND; - if (entry_time <= ts) { - sector = src->vts_tmapt->tmap[i].map_ent[j] & 0x7fffffff; - } - if (entry_time >= ts) { - return sector; - } + entry_time = src->vts_tmapt->tmap[src->ttn - 1].tmu * (j + 1) * GST_SECOND; + if (entry_time <= ts) { + sector = src->vts_tmapt->tmap[src->ttn - 1].map_ent[j] & 0x7fffffff; + } + if (entry_time >= ts) { + return sector; } }