File: OnePointPlayableSound.cpp

package info (click to toggle)
transcend 0.3.dfsg1-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 5,816 kB
  • ctags: 2,912
  • sloc: cpp: 26,890; ansic: 693; sh: 210; makefile: 131; perl: 67
file content (69 lines) | stat: -rw-r--r-- 1,690 bytes parent folder | download | duplicates (6)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 * Modification History
 *
 * 2004-August-9   Jason Rohrer
 * Created.
 *
 * 2004-August-12   Jason Rohrer
 * Added support for getting blocks of samples.
 */


#include "OnePointPlayableSound.h"



OnePointPlayableSound::OnePointPlayableSound(
    StereoSoundParameterSpaceControlPoint *inControlPoint,
    double inSoundLengthInSeconds,
    int inSamplesPerSecond )
    : mControlPoint( inControlPoint ),
      mSoundLengthInSeconds( inSoundLengthInSeconds ),
      mSamplesPerSecond( inSamplesPerSecond ),
      mSoundLengthInSamples(
          (unsigned long)( inSoundLengthInSeconds * inSamplesPerSecond ) ),
      mCurrentSoundPositionInSamples( 0 ) {

    }



OnePointPlayableSound::~OnePointPlayableSound() {
    delete mControlPoint;
    }



SoundSamples *OnePointPlayableSound::getMoreSamples(
    unsigned long inNumSamples ) {

    unsigned long numSamples = inNumSamples;
    
    if( mCurrentSoundPositionInSamples + numSamples >
        mSoundLengthInSamples ) {

        numSamples = mSoundLengthInSamples - mCurrentSoundPositionInSamples;
        }
    
    SoundSamples *resultSamples =
        mControlPoint->getSoundSamples( mCurrentSoundPositionInSamples,
                                        numSamples,
                                        mSamplesPerSecond,
                                        mSoundLengthInSeconds );

    mCurrentSoundPositionInSamples += numSamples;
    
    return resultSamples;
    }



PlayableSound *OnePointPlayableSound::copy() {
    return new OnePointPlayableSound(
        (StereoSoundParameterSpaceControlPoint *)(
            mControlPoint->copy() ),
        mSoundLengthInSeconds,
        mSamplesPerSecond );

    }