diff options
Diffstat (limited to 'src/tracker-extract/tracker-extract-gstreamer.c')
-rw-r--r-- | src/tracker-extract/tracker-extract-gstreamer.c | 10 |
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"); |