summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tracker-extract/tracker-extract-gstreamer.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index 9c9dd7d42..a419b54c7 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -1013,6 +1013,16 @@ extract_track_metadata (MetadataExtractor *extractor,
if (toc_entry->duration > 0) {
tracker_sparql_builder_predicate (postupdate, "nfo:duration");
tracker_sparql_builder_object_int64 (postupdate, (gint64)toc_entry->duration);
+ } else if (extractor->toc->entry_list &&
+ toc_entry == g_list_last (extractor->toc->entry_list)->data) {
+ /* The last element may not have a duration, because it depends
+ * on the duration of the media file rather than info from the
+ * cue sheet. In this case figure the data out from the total
+ * duration.
+ */
+ tracker_sparql_builder_predicate (postupdate, "nfo:duration");
+ tracker_sparql_builder_object_int64 (postupdate,
+ (gint64) extractor->duration - toc_entry->start);
}
tracker_sparql_builder_predicate (postupdate, "nfo:audioOffset");