Setup fast state of decoder after creation.
[dcpomatic.git] / src / lib / resampler.cc
index 322c00c136779f009ad1163119bce5496a191dad..b27d7c9668dda9f4bbb0419fcf1a2ed381f42c75 100644 (file)
@@ -43,6 +43,7 @@ Resampler::Resampler (int in, int out, int channels)
        : _in_rate (in)
        , _out_rate (out)
        , _channels (channels)
+       , _fast (false)
 {
        int error;
        _src = src_new (SRC_SINC_BEST_QUALITY, _channels, &error);
@@ -59,13 +60,19 @@ Resampler::~Resampler ()
 }
 
 void
-Resampler::set_fast ()
+Resampler::set_fast (bool fast)
 {
+       if (fast == _fast) {
+               return;
+       }
+
+       _fast = fast;
+
        src_delete (_src);
        _src = 0;
 
        int error;
-       _src = src_new (SRC_LINEAR, _channels, &error);
+       _src = src_new (_fast ? SRC_LINEAR : SRC_SINC_BEST_QUALITY, _channels, &error);
        if (!_src) {
                throw runtime_error (String::compose (N_("could not create sample-rate converter (%1)"), error));
        }