summaryrefslogtreecommitdiffstats
path: root/vrplayer/decoderthread.h
diff options
context:
space:
mode:
Diffstat (limited to 'vrplayer/decoderthread.h')
-rw-r--r--vrplayer/decoderthread.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/vrplayer/decoderthread.h b/vrplayer/decoderthread.h
new file mode 100644
index 00000000..0f8a1c12
--- /dev/null
+++ b/vrplayer/decoderthread.h
@@ -0,0 +1,72 @@
+#ifndef DECODERTHREAD_H
+#define DECODERTHREAD_H
+
+#ifdef __cplusplus
+#define __STDC_CONSTANT_MACROS
+#ifdef _STDINT_H
+#undef _STDINT_H
+#endif
+#include <stdint.h>
+#endif
+
+#include <QThread>
+#include <QDebug>
+#include <QString>
+#include <QRect>
+#include <QMutex>
+
+#include <xrdpapi.h>
+#include <xrdpvr.h>
+
+/* ffmpeg related stuff */
+extern "C"
+{
+ #include <libavformat/avformat.h>
+ #include <libavcodec/avcodec.h>
+}
+
+class DecoderThread : public QThread
+{
+ Q_OBJECT
+
+public:
+ DecoderThread();
+ void setFilename(QString filename);
+
+public slots:
+ void on_geometryChanged(int x, int y, int width, int height);
+ void on_mediaSeek(int value);
+
+protected:
+ void run();
+
+private:
+ typedef struct _VideoStateInfo
+ {
+ AVFormatContext *pFormatCtx;
+ } VideoStateInfo;
+
+ VideoStateInfo *vsi;
+ QString filename;
+ void *channel;
+ int stream_id;
+ QRect geometry;
+ int64_t elapsedTime; /* elapsed time in usecs since play started */
+ QMutex mutex;
+ int64_t la_seekPos; /* locked access; must hold mutex */
+
+ int openVirtualChannel();
+ int closeVirtualChannel();
+ int sendMetadataFile();
+ int sendVideoFormat();
+ int sendAudioFormat();
+ int sendGeometry();
+
+signals:
+ void on_progressUpdate(int percent);
+ void on_decoderErrorMsg(QString title, QString msg);
+ void on_mediaDurationInSeconds(int duration);
+ void on_elapsedtime(int val); /* in hundredth of a sec */
+};
+
+#endif // DECODERTHREAD_H