2 #define WIN32_LEAN_AND_MEAN
8 inline void Sleep(uint32_t ms
)
10 struct timespec ts
, rem
;
11 ts
.tv_sec
= ms
/ 1000;
12 ts
.tv_nsec
= (ms
% 1000) * 1000000;
13 while(nanosleep(&ts
, &rem
) == -1 && errno
== EINTR
)
25 int main(int argc
, char *argv
[])
27 alure::DeviceManager
*devMgr
= alure::DeviceManager::get();
29 alure::Device
*dev
= devMgr
->openPlayback();
30 std::cout
<< "Opened \""<<dev
->getName(alure::PlaybackDevType_Basic
)<<"\"" <<std::endl
;
32 alure::Context
*ctx
= dev
->createContext();
33 alure::Context::MakeCurrent(ctx
);
35 for(int i
= 1;i
< argc
;i
++)
38 if(i
+2 < argc
&& strcmp(argv
[i
], "-start") == 0)
40 std::stringstream
sstr(argv
[i
+1]);
46 alure::SharedPtr
<alure::Decoder
> decoder(ctx
->createDecoder(argv
[i
]));
47 alure::Source
*source
= ctx
->getSource();
50 source
->setOffset(uint64_t(offset
* decoder
->getFrequency()));
52 source
->play(decoder
, 32768, 4);
53 std::cout
<< "Playing "<<argv
[i
]<<" ("<<alure::GetSampleTypeName(decoder
->getSampleType())<<", "
54 <<alure::GetChannelConfigName(decoder
->getChannelConfig())<<", "
55 <<decoder
->getFrequency()<<"hz)" <<std::endl
;
57 float invfreq
= 1.0f
/ decoder
->getFrequency();
58 while(source
->isPlaying())
60 std::cout
<< "\r "<<std::setiosflags(std::ios::fixed
)<<std::setprecision(2)<<
61 (source
->getOffset()*invfreq
)<<" / "<<(decoder
->getLength()*invfreq
);
72 alure::Context::MakeCurrent(0);