X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fxinestream.cpp;fp=source%2Fxinestream.cpp;h=fd2c6224fb9e6aea49551af343f829b4881d37fe;hb=4157ae2c48c539a3bbe609ab143d4c1454fd1748;hp=0000000000000000000000000000000000000000;hpb=b59b30ecd8131677b42232722df901120bd62213;p=xinema.git diff --git a/source/xinestream.cpp b/source/xinestream.cpp new file mode 100644 index 0000000..fd2c622 --- /dev/null +++ b/source/xinestream.cpp @@ -0,0 +1,53 @@ +#include +#include "xineengine.h" +#include "xinestream.h" + +using namespace std; +using namespace Msp; + +XineStream::XineStream(XineEngine &engine, const string &mrl) +{ + stream = xine_stream_new(engine.get_engine(), engine.get_audio_driver(), engine.get_video_driver()); + xine_open(stream, mrl.c_str()); + + queue = xine_event_new_queue(stream); +} + +XineStream::~XineStream() +{ + xine_close(stream); + xine_event_dispose_queue(queue); + xine_dispose(stream); +} + +void XineStream::play() +{ + xine_play(stream, 0, 0); +} + +void XineStream::stop() +{ + xine_stop(stream); +} + +void XineStream::tick() +{ + while(xine_event_t *event = xine_event_get(queue)) + { + handle_event(*event); + xine_event_free(event); + } +} + +void XineStream::handle_event(const xine_event_t &event) +{ + switch(event.type) + { + case XINE_EVENT_PROGRESS: + { + xine_progress_data_t *data = reinterpret_cast(event.data); + IO::print("%s [%d%%]\n", data->description, data->percent); + } + break; + } +}