[SCM] libgroove/upstream: loudness: fix crash for songs with 0 frames. closes #48

andrewrk-guest at users.alioth.debian.org andrewrk-guest at users.alioth.debian.org
Mon Mar 17 02:20:50 UTC 2014


The following commit has been merged in the upstream branch:
commit d17a2652f80d9ca67bc6eda9ebc789b3f4c0be4d
Author: Andrew Kelley <superjoe30 at gmail.com>
Date:   Sun Mar 16 19:04:11 2014 -0700

    loudness: fix crash for songs with 0 frames. closes #48

diff --git a/grooveloudness/loudness.c b/grooveloudness/loudness.c
index 8cd2570..de30431 100644
--- a/grooveloudness/loudness.c
+++ b/grooveloudness/loudness.c
@@ -60,12 +60,20 @@ static int emit_track_info(struct GrooveLoudnessDetectorPrivate *d) {
     info->duration = d->track_duration;
 
     ebur128_state *cur_track_state = d->all_track_states[d->cur_track_index];
-    ebur128_loudness_global(cur_track_state, &info->loudness);
-    ebur128_true_peak(cur_track_state, 0, &info->peak);
-    double out;
-    ebur128_true_peak(cur_track_state, 1, &out);
-    if (out > info->peak) info->peak = out;
-    if (info->peak > d->album_peak) d->album_peak = info->peak;
+    if (!cur_track_state) {
+        // we received the end before we expected it. This happens for example
+        // when a DRM-protected song is played. In this situation, set duration to 0
+        // to indicate no song data.
+        info->loudness = 0;
+        info->peak = 0;
+    } else {
+        ebur128_loudness_global(cur_track_state, &info->loudness);
+        ebur128_true_peak(cur_track_state, 0, &info->peak);
+        double out;
+        ebur128_true_peak(cur_track_state, 1, &out);
+        if (out > info->peak) info->peak = out;
+        if (info->peak > d->album_peak) d->album_peak = info->peak;
+    }
 
     groove_queue_put(d->info_queue, info);
 
@@ -384,6 +392,7 @@ int groove_loudness_detector_detach(struct GrooveLoudnessDetector *detector) {
     d->abort_request = 0;
     d->info_head = NULL;
     d->info_pos = 0;
+    d->track_duration = 0.0;
 
     return 0;
 }

-- 
libgroove packaging



More information about the pkg-multimedia-commits mailing list