2 * A simple example showing how to stream a file through a source.
14 int main(int argc
, char *argv
[])
16 alure::DeviceManager devMgr
= alure::DeviceManager::get();
20 if(argc
> 3 && strcmp(argv
[1], "-device") == 0)
23 dev
= devMgr
.openPlayback(argv
[2], std::nothrow
);
25 std::cerr
<< "Failed to open \""<<argv
[2]<<"\" - trying default" <<std::endl
;
28 dev
= devMgr
.openPlayback();
29 std::cout
<< "Opened \""<<dev
.getName()<<"\"" <<std::endl
;
31 alure::Context ctx
= dev
.createContext();
32 alure::Context::MakeCurrent(ctx
);
34 for(int i
= fileidx
;i
< argc
;i
++)
36 alure::SharedPtr
<alure::Decoder
> decoder(ctx
.createDecoder(argv
[i
]));
37 alure::Source source
= ctx
.createSource();
39 source
.play(decoder
, 12000, 4);
40 std::cout
<< "Playing "<<argv
[i
]<<" ("<<alure::GetSampleTypeName(decoder
->getSampleType())<<", "
41 <<alure::GetChannelConfigName(decoder
->getChannelConfig())<<", "
42 <<decoder
->getFrequency()<<"hz)" <<std::endl
;
44 float invfreq
= 1.0f
/ decoder
->getFrequency();
45 while(source
.isPlaying())
47 std::cout
<< "\r "<<std::setiosflags(std::ios::fixed
)<<std::setprecision(2)<<
48 source
.getSecOffset().count()<<" / "<<(decoder
->getLength()*invfreq
);
50 std::this_thread::sleep_for(std::chrono::milliseconds(25));
58 alure::Context::MakeCurrent(nullptr);