media/libsoundtouch/src/InterpolateLinear.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 ////////////////////////////////////////////////////////////////////////////////
     2 /// 
     3 /// Linear interpolation routine.
     4 ///
     5 /// Author        : Copyright (c) Olli Parviainen
     6 /// Author e-mail : oparviai 'at' iki.fi
     7 /// SoundTouch WWW: http://www.surina.net/soundtouch
     8 ///
     9 ////////////////////////////////////////////////////////////////////////////////
    10 //
    11 // $Id: InterpolateLinear.h 179 2014-01-06 18:41:42Z oparviai $
    12 //
    13 ////////////////////////////////////////////////////////////////////////////////
    14 //
    15 // License :
    16 //
    17 //  SoundTouch audio processing library
    18 //  Copyright (c) Olli Parviainen
    19 //
    20 //  This library is free software; you can redistribute it and/or
    21 //  modify it under the terms of the GNU Lesser General Public
    22 //  License as published by the Free Software Foundation; either
    23 //  version 2.1 of the License, or (at your option) any later version.
    24 //
    25 //  This library is distributed in the hope that it will be useful,
    26 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
    27 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    28 //  Lesser General Public License for more details.
    29 //
    30 //  You should have received a copy of the GNU Lesser General Public
    31 //  License along with this library; if not, write to the Free Software
    32 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    33 //
    34 ////////////////////////////////////////////////////////////////////////////////
    36 #ifndef _InterpolateLinear_H_
    37 #define _InterpolateLinear_H_
    39 #include "RateTransposer.h"
    40 #include "STTypes.h"
    42 namespace soundtouch
    43 {
    45 /// Linear transposer class that uses integer arithmetics
    46 class InterpolateLinearInteger : public TransposerBase
    47 {
    48 protected:
    49     int iFract;
    50     int iRate;
    52     virtual void resetRegisters();
    54     virtual int transposeMono(SAMPLETYPE *dest, 
    55                        const SAMPLETYPE *src, 
    56                        int &srcSamples);
    57     virtual int transposeStereo(SAMPLETYPE *dest, 
    58                          const SAMPLETYPE *src, 
    59                          int &srcSamples);
    60     virtual int transposeMulti(SAMPLETYPE *dest, const SAMPLETYPE *src, int &srcSamples);
    61 public:
    62     InterpolateLinearInteger();
    64     /// Sets new target rate. Normal rate = 1.0, smaller values represent slower 
    65     /// rate, larger faster rates.
    66     virtual void setRate(float newRate);
    67 };
    70 /// Linear transposer class that uses floating point arithmetics
    71 class InterpolateLinearFloat : public TransposerBase
    72 {
    73 protected:
    74     float fract;
    76     virtual void resetRegisters();
    78     virtual int transposeMono(SAMPLETYPE *dest, 
    79                        const SAMPLETYPE *src, 
    80                        int &srcSamples);
    81     virtual int transposeStereo(SAMPLETYPE *dest, 
    82                          const SAMPLETYPE *src, 
    83                          int &srcSamples);
    84     virtual int transposeMulti(SAMPLETYPE *dest, const SAMPLETYPE *src, int &srcSamples);
    86 public:
    87     InterpolateLinearFloat();
    88 };
    90 }
    92 #endif

mercurial