summaryrefslogtreecommitdiffstats
path: root/vrplayer
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2013-07-19 20:02:16 -0700
committerJay Sorg <jay.sorg@gmail.com>2013-07-19 20:02:16 -0700
commit6a5f1417691b48dadca244544bf552c7cad2013d (patch)
treefc79bcf174f64123e52757cdc1fe4b8ebcb0024e /vrplayer
parent12381b1c0d7cc6a497a12b32c2d7e9be19ddb309 (diff)
downloadxrdp-proprietary-6a5f1417691b48dadca244544bf552c7cad2013d.tar.gz
xrdp-proprietary-6a5f1417691b48dadca244544bf552c7cad2013d.zip
vrplayer: update from neutrinolabs
Diffstat (limited to 'vrplayer')
-rw-r--r--vrplayer/demuxmedia.cpp3
-rw-r--r--vrplayer/mainwindow.cpp146
-rw-r--r--vrplayer/mainwindow.h11
-rw-r--r--vrplayer/mainwindow.ui12
-rw-r--r--vrplayer/ourinterface.cpp12
-rw-r--r--vrplayer/ourinterface.h1
-rw-r--r--vrplayer/playaudio.cpp3
-rw-r--r--vrplayer/playvideo.cpp3
-rw-r--r--vrplayer/vrplayer.pro9
9 files changed, 187 insertions, 13 deletions
diff --git a/vrplayer/demuxmedia.cpp b/vrplayer/demuxmedia.cpp
index ed91b387..c6893ceb 100644
--- a/vrplayer/demuxmedia.cpp
+++ b/vrplayer/demuxmedia.cpp
@@ -1,3 +1,6 @@
+
+#include <unistd.h>
+
#include "demuxmedia.h"
DemuxMedia::DemuxMedia(QObject *parent, QQueue<MediaPacket *> *audioQueue,
diff --git a/vrplayer/mainwindow.cpp b/vrplayer/mainwindow.cpp
index b97da148..1782f710 100644
--- a/vrplayer/mainwindow.cpp
+++ b/vrplayer/mainwindow.cpp
@@ -4,12 +4,18 @@
/*
* TODO
* o should we use tick marks in QSlider?
+ * o check for memory leaks
+ * o double click should make it full screen
+ * o when opening files, pause video
*/
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
+ gotMediaOnCmdline = false;
+ moveResizeTimer = NULL;
+
/* connect to remote client */
interface = new OurInterface();
if (interface->oneTimeInit())
@@ -35,16 +41,42 @@ MainWindow::MainWindow(QWidget *parent) :
connect(interface, SIGNAL(onMediaDurationInSeconds(int)),
this, SLOT(onMediaDurationInSeconds(int)));
+
+ /* if media file is specified on cmd line, use it */
+ QStringList args = QApplication::arguments();
+ if (args.count() > 1)
+ {
+ if (QFile::exists(args.at(1)))
+ {
+ interface->setFilename(args.at(1));
+ filename = args.at(1);
+ gotMediaOnCmdline = true;
+ on_actionOpen_Media_File_triggered();
+ }
+ else
+ {
+ QMessageBox::warning(this, "Invalid media file specified",
+ "\nThe media file\n\n" + args.at(1) +
+ "\n\ndoes not exist");
+ }
+ }
}
MainWindow::~MainWindow()
{
delete ui;
+
+ if (moveResizeTimer)
+ delete moveResizeTimer;
}
void MainWindow::closeEvent(QCloseEvent *event)
{
- if (!oneTimeInitSuccess)
+ if (oneTimeInitSuccess)
+ {
+ interface->deInitRemoteClient();
+ }
+ else
{
QMessageBox::warning(this, "Closing application",
"This is not an xrdp session with xrdpvr");
@@ -54,22 +86,68 @@ void MainWindow::closeEvent(QCloseEvent *event)
void MainWindow::resizeEvent(QResizeEvent *)
{
- QRect rect;
+ if (vcrFlag != VCR_PLAY)
+ {
+ QRect rect;
- getVdoGeometry(&rect);
- interface->sendGeometry(rect);
+ getVdoGeometry(&rect);
+ interface->sendGeometry(rect);
+ return;
+ }
+
+ interface->setVcrOp(VCR_PAUSE);
+ vcrFlag = VCR_PAUSE;
+
+ if (!moveResizeTimer)
+ {
+ moveResizeTimer = new QTimer;
+ connect(moveResizeTimer, SIGNAL(timeout()),
+ this, SLOT(onMoveCompleted()));
+ }
+ lblVideo->setStyleSheet("QLabel { background-color : black; color : blue; }");
+ moveResizeTimer->start(1000);
}
void MainWindow::moveEvent(QMoveEvent *)
{
- QRect rect;
+ if (vcrFlag != VCR_PLAY)
+ {
+ QRect rect;
- getVdoGeometry(&rect);
- interface->sendGeometry(rect);
+ getVdoGeometry(&rect);
+ interface->sendGeometry(rect);
+ return;
+ }
+
+ interface->setVcrOp(VCR_PAUSE);
+ vcrFlag = VCR_PAUSE;
+
+ if (!moveResizeTimer)
+ {
+ moveResizeTimer = new QTimer;
+ connect(moveResizeTimer, SIGNAL(timeout()),
+ this, SLOT(onMoveCompleted()));
+ }
+ lblVideo->setStyleSheet("QLabel { background-color : black; color : blue; }");
+ moveResizeTimer->start(1000);
+}
+
+void MainWindow::onVolSliderValueChanged(int value)
+{
+ int volume;
+
+ volume = (value * 0xffff) / 100;
+ if (interface != 0)
+ {
+ interface->setVolume(volume);
+ }
+ qDebug() << "vol = " << volume;
}
void MainWindow::setupUI()
{
+ this->setWindowTitle("vrplayer");
+
/* setup area to display video */
lblVideo = new QLabel();
lblVideo->setMinimumWidth(320);
@@ -134,10 +212,26 @@ void MainWindow::setupUI()
connect(btnRewind, SIGNAL(clicked(bool)),
this, SLOT(onBtnRewindClicked(bool)));
+ /* setup volume control slider */
+ volSlider = new QSlider();
+ volSlider->setOrientation(Qt::Horizontal);
+ volSlider->setMinimumWidth(100);
+ volSlider->setMaximumWidth(100);
+ volSlider->setMinimum(0);
+ volSlider->setMaximum(100);
+ volSlider->setValue(20);
+ volSlider->setTickPosition(QSlider::TicksAbove);
+ volSlider->setTickInterval(10);
+
+ connect(volSlider, SIGNAL(valueChanged(int)),
+ this, SLOT(onVolSliderValueChanged(int)));
+
/* add buttons to bottom panel */
hboxLayoutBottom = new QHBoxLayout;
hboxLayoutBottom->addWidget(btnPlay);
hboxLayoutBottom->addWidget(btnStop);
+ hboxLayoutBottom->addWidget(volSlider);
+
//hboxLayoutBottom->addWidget(btnRewind);
hboxLayoutBottom->addStretch();
@@ -208,9 +302,14 @@ void MainWindow::clearDisplay()
void MainWindow::on_actionOpen_Media_File_triggered()
{
if (vcrFlag != 0)
- onBtnStopClicked(false);
+ onBtnStopClicked(true);
+
+ /* if media was specified on cmd line, use it just once */
+ if (gotMediaOnCmdline)
+ gotMediaOnCmdline = false;
+ else
+ openMediaFile();
- openMediaFile();
if (filename.length() == 0)
{
/* cancel btn was clicked */
@@ -238,7 +337,7 @@ void MainWindow::on_actionOpen_Media_File_triggered()
remoteClientInited = true;
interface->playMedia();
- if (vcrFlag != 0)
+ //if (vcrFlag != 0)
{
interface->setVcrOp(VCR_PLAY);
btnPlay->setText("Pause");
@@ -404,3 +503,30 @@ void MainWindow::onSliderActionTriggered(int action)
}
}
+void MainWindow::onMoveCompleted()
+{
+ QRect rect;
+
+ getVdoGeometry(&rect);
+ interface->sendGeometry(rect);
+
+ interface->setVcrOp(VCR_PLAY);
+ vcrFlag = VCR_PLAY;
+ moveResizeTimer->stop();
+}
+
+void MainWindow::on_actionAbout_triggered()
+{
+#if 0
+ QMessageBox msgBox;
+
+ msgBox.setText("VRPlayer version 1.2");
+ msgBox.setStandardButtons(QMessageBox::Ok);
+ msgBox.setDefaultButton(QMessageBox::Ok);
+ msgBox.exec();
+#else
+ DlgAbout *dlgabt = new DlgAbout(this);
+ dlgabt->exec();
+
+#endif
+}
diff --git a/vrplayer/mainwindow.h b/vrplayer/mainwindow.h
index 802fd10d..4fef0d60 100644
--- a/vrplayer/mainwindow.h
+++ b/vrplayer/mainwindow.h
@@ -25,12 +25,15 @@
#include <QTimer>
#include <QPixmap>
#include <QPainter>
+#include <QFile>
+#include <QTimer>
#include "xrdpapi.h"
#include "xrdpvr.h"
#include "decoder.h"
#include "ourinterface.h"
#include "playvideo.h"
+#include "dlgabout.h"
/* ffmpeg related stuff */
extern "C"
@@ -75,6 +78,11 @@ private slots:
void onMediaDurationInSeconds(int duration);
void onElapsedTime(int secs);
void onSliderActionTriggered(int value);
+ void onMoveCompleted();
+
+ void on_actionAbout_triggered();
+
+ void onVolSliderValueChanged(int value);
protected:
void resizeEvent(QResizeEvent *e);
@@ -96,8 +104,10 @@ private:
QPushButton *btnStop;
QPushButton *btnRewind;
QSlider *slider;
+ QSlider *volSlider;
QWidget *window;
bool acceptSliderMove;
+ QTimer *moveResizeTimer;
/* private stuff */
OurInterface *interface;
@@ -109,6 +119,7 @@ private:
int stream_id;
int64_t elapsedTime; /* elapsed time in usecs since play started */
int vcrFlag;
+ bool gotMediaOnCmdline;
/* private methods */
void setupUI();
diff --git a/vrplayer/mainwindow.ui b/vrplayer/mainwindow.ui
index af924894..b9c2a85c 100644
--- a/vrplayer/mainwindow.ui
+++ b/vrplayer/mainwindow.ui
@@ -31,7 +31,14 @@
<addaction name="separator"/>
<addaction name="actionExit"/>
</widget>
+ <widget class="QMenu" name="menuHelp">
+ <property name="title">
+ <string>Help</string>
+ </property>
+ <addaction name="actionAbout"/>
+ </widget>
<addaction name="menuFile"/>
+ <addaction name="menuHelp"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
@@ -55,6 +62,11 @@
<string>Exit application</string>
</property>
</action>
+ <action name="actionAbout">
+ <property name="text">
+ <string>About</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
diff --git a/vrplayer/ourinterface.cpp b/vrplayer/ourinterface.cpp
index 094a84f7..cee66691 100644
--- a/vrplayer/ourinterface.cpp
+++ b/vrplayer/ourinterface.cpp
@@ -215,3 +215,15 @@ void OurInterface::setVcrOp(int op)
if (demuxMedia)
demuxMedia->setVcrOp(op);
}
+
+int OurInterface::setVolume(int volume)
+{
+ printf("OurInterface::setVolume\n");
+ if (xrdpvr_set_volume(channel, volume))
+ {
+ emit on_ErrorMsg("I/O Error",
+ "Error sending volume to remote client");
+ return -1;
+ }
+ return 0;
+}
diff --git a/vrplayer/ourinterface.h b/vrplayer/ourinterface.h
index ea402048..86352001 100644
--- a/vrplayer/ourinterface.h
+++ b/vrplayer/ourinterface.h
@@ -42,6 +42,7 @@ public:
void playMedia();
PlayVideo *getPlayVideoInstance();
void setVcrOp(int op);
+ int setVolume(int volume);
public slots:
void onGeometryChanged(int x, int y, int width, int height);
diff --git a/vrplayer/playaudio.cpp b/vrplayer/playaudio.cpp
index bab7d38b..fee98f9d 100644
--- a/vrplayer/playaudio.cpp
+++ b/vrplayer/playaudio.cpp
@@ -1,3 +1,6 @@
+
+#include <unistd.h>
+
#include "playaudio.h"
#include <QDebug>
diff --git a/vrplayer/playvideo.cpp b/vrplayer/playvideo.cpp
index e1a7ec90..24ef492d 100644
--- a/vrplayer/playvideo.cpp
+++ b/vrplayer/playvideo.cpp
@@ -1,3 +1,6 @@
+
+#include <unistd.h>
+
#include "playvideo.h"
#include <QDebug>
diff --git a/vrplayer/vrplayer.pro b/vrplayer/vrplayer.pro
index a6e53231..1708a7f4 100644
--- a/vrplayer/vrplayer.pro
+++ b/vrplayer/vrplayer.pro
@@ -16,16 +16,19 @@ SOURCES += main.cpp\
mediapacket.cpp \
playaudio.cpp \
demuxmedia.cpp \
- ourinterface.cpp
+ ourinterface.cpp \
+ dlgabout.cpp
HEADERS += mainwindow.h \
mediapacket.h \
playvideo.h \
playaudio.h \
demuxmedia.h \
- ourinterface.h
+ ourinterface.h \
+ dlgabout.h
-FORMS += mainwindow.ui
+FORMS += mainwindow.ui \
+ dlgabout.ui
# added by LK
INCLUDEPATH += ../xrdpvr