summaryrefslogtreecommitdiff
path: root/audio/akode/patches/patch-ag
blob: c70668859675e412874d0b6902764829714c7798 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$NetBSD: patch-ag,v 1.1.1.1 2009/02/26 18:00:34 hasso Exp $

* Attempt fallback to ffmpeg decoder if loading the "native" one fails.
* Reset resampler/converter if it isn't necessary any more.

--- akode/lib/player.cpp.orig	2009-02-20 15:04:49 +0200
+++ akode/lib/player.cpp	2009-02-20 15:11:55 +0200
@@ -345,8 +345,11 @@ bool Player::load() {
             d->src = 0;
             return false;
         }
-        if (!d->decoder_handler.load(format))
+        if (!d->decoder_handler.load(format)) {
             AKODE_DEBUG("Could not load " << format << "-decoder");
+            if (!d->decoder_handler.load("ffmpeg"))
+                AKODE_DEBUG("Could not load ffmpeg-decoder");
+        }
     }
 
     if (!d->decoder_handler.isLoaded()) {
@@ -398,6 +401,9 @@ bool Player::load() {
         if (d->sample_rate != first_frame.sample_rate) {
             AKODE_DEBUG("Resampling to " << d->sample_rate);
             d->resampler->setSampleRate(d->sample_rate);
+        } else {
+            delete d->resampler;
+            d->resampler = 0;
         }
         int out_channels = d->sink->audioConfiguration()->channels;
         int in_channels = first_frame.channels;
@@ -419,6 +425,9 @@ bool Player::load() {
                 d->converter = new Converter(out_width);
             else
                 d->converter->setSampleWidth(out_width);
+        } else {
+            delete d->converter;
+            d->converter = 0;
         }
     }
     else