summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vrplayer/README.txt29
-rw-r--r--vrplayer/demuxmedia.cpp2
-rw-r--r--vrplayer/demuxmedia.h4
-rw-r--r--vrplayer/mainwindow.cpp24
-rw-r--r--vrplayer/mainwindow.h1
-rw-r--r--vrplayer/ourinterface.cpp6
-rw-r--r--vrplayer/playvideo.cpp9
-rw-r--r--vrplayer/playvideo.h1
8 files changed, 44 insertions, 32 deletions
diff --git a/vrplayer/README.txt b/vrplayer/README.txt
index 75903a0e..3584aaec 100644
--- a/vrplayer/README.txt
+++ b/vrplayer/README.txt
@@ -1,17 +1,32 @@
-
A QT based media player that runs on a RDP server and
redirects audio/video to the client where it is decoded
and rendered locally
-To build vrplayer, installl QT 4.x , then run
+Required packages to build vrplayer:
+------------------------------------
+libqt4-gui
+qt4-dev-tools
+libavutil-dev
+libavformat-dev
+to build vrplayer
+-----------------
+cd ../xrdpvr
+make
+cd ..
qmake
make
-mint 13 packages
-libqt4-gui
-qt4-dev-tools
+To run vrplayer
+---------------
+include xrdpapi/.libs and xrdpvr/.libs in your LD_LIBRARY_PATH
+
+Example:
+--------
+export LD_LIBRARY_PATH=../xrdpapi/.libs:../xrdpvr/.libs
+run vrplayer inside the xfreerdp session
-To run vrplayer, include xrdpapi/.libs and xrdpvr/.libs in
-your LD_LIBRARY_PATH
+this is how we run xfreerdp:
+----------------------------
+./xfreerdp --sec rdp --plugin xrdpvr 192.168.2.149
diff --git a/vrplayer/demuxmedia.cpp b/vrplayer/demuxmedia.cpp
index 7a13619e..ed91b387 100644
--- a/vrplayer/demuxmedia.cpp
+++ b/vrplayer/demuxmedia.cpp
@@ -88,7 +88,9 @@ void DemuxMedia::startDemuxing()
{
/* looks like we reached end of file */
delete mediaPkt;
+ playVideo->onMediaRestarted();
usleep(1000 * 100);
+ xrdpvr_seek_media(0, 0);
continue;
}
diff --git a/vrplayer/demuxmedia.h b/vrplayer/demuxmedia.h
index ecb25462..b83a8857 100644
--- a/vrplayer/demuxmedia.h
+++ b/vrplayer/demuxmedia.h
@@ -35,6 +35,7 @@ extern "C"
class DemuxMedia : public QObject
{
Q_OBJECT
+
public:
explicit DemuxMedia(QObject *parent = 0, QQueue<MediaPacket *> *audioQueue = 0,
QQueue<MediaPacket *> *videoQueue = 0, void *channel = 0, int stream_id = 101);
@@ -60,6 +61,9 @@ private:
QMutex sendMutex;
void startAudioVideoThreads();
+
+signals:
+ void onMediaRestarted();
};
#endif // DEMUXMEDIA_H
diff --git a/vrplayer/mainwindow.cpp b/vrplayer/mainwindow.cpp
index 43060746..b97da148 100644
--- a/vrplayer/mainwindow.cpp
+++ b/vrplayer/mainwindow.cpp
@@ -275,7 +275,6 @@ void MainWindow::onBtnPlayClicked(bool)
interface->setVcrOp(VCR_PLAY);
vcrFlag = VCR_PLAY;
}
-
else if (vcrFlag == VCR_STOP)
{
/* btn clicked while stopped - enter play mode */
@@ -312,15 +311,13 @@ void MainWindow::onMediaDurationInSeconds(int duration)
int secs = 0;
char buf[20];
-//return;
-
/* setup progress bar */
slider->setMinimum(0);
slider->setMaximum(duration * 100); /* in hundredth of a sec */
slider->setValue(0);
slider->setSliderPosition(0);
lblCurrentPos->setText("00:00:00");
- qDebug() << "media_duration=" << duration << " in hundredth of a sec:" << duration * 100;
+ //qDebug() << "media_duration=" << duration << " in hundredth of a sec:" << duration * 100;
/* convert from seconds to hours:minutes:seconds */
hours = duration / 3600;
@@ -345,26 +342,24 @@ void MainWindow::onElapsedTime(int val)
int hours = 0;
int minutes = 0;
int secs = 0;
- int duration = val / 100;
+ int duration = 0;
char buf[20];
if (vcrFlag == VCR_STOP)
- {
- qDebug() << "onElapsedTime: not updating slider coz of VCR_STOP";
return;
- }
/* if slider bar is down, do not update */
if (slider->isSliderDown())
- {
- qDebug() << "onElapsedTime: not updating slider coz slider is down";
return;
- }
/* update progress bar */
+ if (val >= slider->maximum())
+ val = 0;
+
slider->setSliderPosition(val);
/* convert from seconds to hours:minutes:seconds */
+ duration = val / 100;
hours = duration / 3600;
if (hours)
duration -= (hours * 3600);
@@ -409,10 +404,3 @@ void MainWindow::onSliderActionTriggered(int action)
}
}
-#if 1
-// LK_TODO delete this
-void MainWindow::mouseMoveEvent(QMouseEvent *)
-{
- //qDebug() << "mouseMoveEvent: x=" << e->globalX() << "y=" << e->globalY();
-}
-#endif
diff --git a/vrplayer/mainwindow.h b/vrplayer/mainwindow.h
index ceddb683..802fd10d 100644
--- a/vrplayer/mainwindow.h
+++ b/vrplayer/mainwindow.h
@@ -80,7 +80,6 @@ protected:
void resizeEvent(QResizeEvent *e);
void closeEvent(QCloseEvent *e);
void moveEvent(QMoveEvent *e);
- void mouseMoveEvent(QMouseEvent *e);
private:
Ui::MainWindow *ui;
diff --git a/vrplayer/ourinterface.cpp b/vrplayer/ourinterface.cpp
index fb4ad3dc..094a84f7 100644
--- a/vrplayer/ourinterface.cpp
+++ b/vrplayer/ourinterface.cpp
@@ -53,7 +53,7 @@ void OurInterface::initRemoteClient()
xrdpvr_play_media(channel, 101, filename.toAscii().data());
xrdpvr_get_media_duration(&start_time, &duration);
- qDebug() << "ourInterface:initRemoteClient: emit onMediaDurationInSecs: dur=" << duration;
+ //qDebug() << "ourInterface:initRemoteClient: emit onMediaDurationInSecs: dur=" << duration;
emit onMediaDurationInSeconds(duration);
/* LK_TODO this needs to be undone in deinitRemoteClient() */
@@ -180,7 +180,7 @@ void OurInterface::onGeometryChanged(int x, int y, int width, int height)
savedGeometry.setWidth(width);
savedGeometry.setHeight(height);
-#if 1
+#if 0
qDebug() << "OurInterface:signal" <<
"" << savedGeometry.x() <<
"" << savedGeometry.y() <<
@@ -188,8 +188,6 @@ void OurInterface::onGeometryChanged(int x, int y, int width, int height)
"" << savedGeometry.height();
#endif
- qDebug() << "setting geometry:channel=" << channel;
-
if (channel)
{
xrdpvr_set_geometry(channel, 101, savedGeometry.x(), savedGeometry.y(),
diff --git a/vrplayer/playvideo.cpp b/vrplayer/playvideo.cpp
index 40ddbf29..e1a7ec90 100644
--- a/vrplayer/playvideo.cpp
+++ b/vrplayer/playvideo.cpp
@@ -105,6 +105,11 @@ label1:
}
}
+void PlayVideo::onMediaRestarted()
+{
+ elapsedTime = av_gettime();
+}
+
void PlayVideo::onMediaSeek(int value)
{
posMutex.lock();
@@ -125,7 +130,7 @@ void PlayVideo::updateMediaPos()
posMutex.lock();
if (la_seekPos >= 0)
{
- qDebug() << "seeking to" << la_seekPos;
+ //qDebug() << "seeking to" << la_seekPos;
xrdpvr_seek_media(la_seekPos, 0);
elapsedTime = av_gettime() - la_seekPos * 1000000;
la_seekPos = -1;
@@ -164,7 +169,7 @@ void DecoderThread::updateSlider()
mutex.lock();
if (la_seekPos >= 0)
{
- qDebug() << "seeking to" << la_seekPos;
+ //qDebug() << "seeking to" << la_seekPos;
//audioTimer->stop();
//videoTimer->stop();
xrdpvr_seek_media(la_seekPos, 0);
diff --git a/vrplayer/playvideo.h b/vrplayer/playvideo.h
index e5f68b5e..2ae183b5 100644
--- a/vrplayer/playvideo.h
+++ b/vrplayer/playvideo.h
@@ -43,6 +43,7 @@ public:
void onMediaSeek(int value);
void setVcrOp(int op);
+ void onMediaRestarted();
public slots:
void play();