diff options
Diffstat (limited to 'vrplayer/decoder.cpp')
-rw-r--r-- | vrplayer/decoder.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/vrplayer/decoder.cpp b/vrplayer/decoder.cpp new file mode 100644 index 00000000..b1741997 --- /dev/null +++ b/vrplayer/decoder.cpp @@ -0,0 +1,72 @@ +#include "decoder.h" + +Decoder::Decoder(QObject *parent) : + QObject(parent) +{ + channel = NULL; +} + +/* + * inititialize the decoder + * + * @return 0 on success, -1 on failure + *****************************************************************************/ +int Decoder::init(QString filename) +{ + if (channel) + return -1; + + /* open a virtual channel and connect to remote client */ + channel = WTSVirtualChannelOpenEx(WTS_CURRENT_SESSION, "xrdpvr", 0); + if (channel == NULL) + { + qDebug() << "WTSVirtualChannelOpenEx() failed\n"; + return -1; + } + + /* initialize the player */ + if (xrdpvr_init_player(channel, 101, filename.toAscii().data())) + { + fprintf(stderr, "failed to initialize the player\n"); + return -1; + } + +#if 1 + sleep(1); + qDebug() << "sleeping 1"; + xrdpvr_set_geometry(channel, 101, mainWindowGeometry.x(), + mainWindowGeometry.y(), mainWindowGeometry.width(), + mainWindowGeometry.height()); + qDebug() << "set geometry to:" << mainWindowGeometry.x() << + "" << mainWindowGeometry.y() << + "" << mainWindowGeometry.width() << + "" << mainWindowGeometry.height(); +#endif + + /* send compressed media data to client; client will decompress */ + /* the media and play it locally */ + xrdpvr_play_media(channel, 101, filename.toAscii().data()); + + /* perform clean up */ + xrdpvr_deinit_player(channel, 101); + + WTSVirtualChannelClose(channel); + + return 0; +} + +void Decoder::onGeometryChanged(QRect *g) +{ +#if 1 + mainWindowGeometry.setX(g->x()); + mainWindowGeometry.setY(g->y()); + mainWindowGeometry.setWidth(g->width()); + mainWindowGeometry.setHeight(g->height()); +#else + if (!channel) + return; + + xrdpvr_set_geometry(channel, 101, g->x(), g->y(), g->width(), g->height()); + qDebug() << "sent geometry"; +#endif +} |