38 : mAudioReference( audio ), mT0( t0 )
41 sCurrentPlayer =
this;
45 pthread_create( &mThread, 0, sPlayingThreadSafe,
this );
51 pthread_join( mThread, 0 );
52 delete mAudioReference;
55 void AudioPlayer::PlayingThreadSafe( )
58 AudioManager audioManager( (
int)mAudioReference->GetSampleRate(), 4096 );
65 mOutCfgL.SetChannelID( 0 );
66 mOutCfgR.SetChannelID( 1 );
72 tmpAudioBuffer.
SetSize(bufferSize);
78 ((mT0*1000. - mAudioReference->GetBeginTime())/(mAudioReference->
GetEndTime()-mAudioReference->GetBeginTime()))*((
TTime)mAudioReference->
GetSize()-1.);
80 CLAM_ASSERT( firstSample >= 0,
"Bad sample index!" );
81 CLAM_ASSERT( firstSample < mAudioReference->GetSize(),
"Bad sample index!" );
85 for(
TIndex i=firstSample; i<dataSize && !mCancel; i+=bufferSize )
88 mOutputR.
Do( tmpAudioBuffer );
89 mOutputL.
Do( tmpAudioBuffer );
96 void* AudioPlayer::sPlayingThreadSafe(
void* ptr)
107 delete sCurrentPlayer;
108 sCurrentPlayer =
NULL;