Port DirectShow backend to wince
dshow.h needs to be included before Qt headers as they include the windows header with NOMINMAX macro set. DirectShow header needs min/max macro definition to compile. The min/max macro then conflicts with QDateTime header, hence needs to be undefined again for some occasions. Windows Embedded Compact then defines INTERFACE as macro, which conflicts. Windows Embedded Compact does not support audio end point selection. Feature has been disabled for this platform. Windows Embedded Compact does not support setting meta data, control has been disabled. Windows Embedded Compact does not support VMR, feature was disabled. Direct Show renders always top to buttom. Change-Id: Id17700835e2105fb127b12e3448bea16e3b52546 Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
This commit is contained in:
committed by
Yoann Lopes
parent
3198bf4944
commit
77c9ab4a38
@@ -3,4 +3,4 @@ CONFIG += console
|
|||||||
|
|
||||||
SOURCES += main.cpp
|
SOURCES += main.cpp
|
||||||
|
|
||||||
LIBS += -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32
|
!wince: LIBS += -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32
|
||||||
|
|||||||
@@ -32,8 +32,10 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
|
#ifndef _WIN32_WCE
|
||||||
#include <d3d9.h>
|
#include <d3d9.h>
|
||||||
#include <vmr9.h>
|
#include <vmr9.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
int main(int, char**)
|
int main(int, char**)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ SOURCES += dsserviceplugin.cpp
|
|||||||
mingw: DEFINES += NO_DSHOW_STRSAFE
|
mingw: DEFINES += NO_DSHOW_STRSAFE
|
||||||
|
|
||||||
!config_wmf: include(player/player.pri)
|
!config_wmf: include(player/player.pri)
|
||||||
include(camera/camera.pri)
|
!wince: include(camera/camera.pri)
|
||||||
|
|
||||||
OTHER_FILES += \
|
OTHER_FILES += \
|
||||||
directshow.json \
|
directshow.json \
|
||||||
|
|||||||
@@ -31,14 +31,16 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include <QtCore/qstring.h>
|
#include <QtCore/qstring.h>
|
||||||
#include <QtCore/qdebug.h>
|
#include <QtCore/qdebug.h>
|
||||||
#include <QtCore/QFile>
|
#include <QtCore/QFile>
|
||||||
|
|
||||||
#include "dsserviceplugin.h"
|
#include "dsserviceplugin.h"
|
||||||
#include "dsvideodevicecontrol.h"
|
|
||||||
|
|
||||||
#ifdef QMEDIA_DIRECTSHOW_CAMERA
|
#ifdef QMEDIA_DIRECTSHOW_CAMERA
|
||||||
|
#include "dsvideodevicecontrol.h"
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
#include "dscameraservice.h"
|
#include "dscameraservice.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -34,10 +34,10 @@
|
|||||||
#ifndef DIRECTSHOWGLOBAL_H
|
#ifndef DIRECTSHOWGLOBAL_H
|
||||||
#define DIRECTSHOWGLOBAL_H
|
#define DIRECTSHOWGLOBAL_H
|
||||||
|
|
||||||
#include <QtCore/qglobal.h>
|
|
||||||
|
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
|
|
||||||
|
#include <QtCore/qglobal.h>
|
||||||
|
|
||||||
template <typename T> T *com_cast(IUnknown *unknown, const IID &iid)
|
template <typename T> T *com_cast(IUnknown *unknown, const IID &iid)
|
||||||
{
|
{
|
||||||
T *iface = 0;
|
T *iface = 0;
|
||||||
@@ -112,6 +112,7 @@ DECLARE_INTERFACE_(IFileSourceFilter ,IUnknown)
|
|||||||
|
|
||||||
#ifndef __IAMOpenProgress_INTERFACE_DEFINED__
|
#ifndef __IAMOpenProgress_INTERFACE_DEFINED__
|
||||||
#define __IAMOpenProgress_INTERFACE_DEFINED__
|
#define __IAMOpenProgress_INTERFACE_DEFINED__
|
||||||
|
#undef INTERFACE
|
||||||
#define INTERFACE IAMOpenProgress
|
#define INTERFACE IAMOpenProgress
|
||||||
DECLARE_INTERFACE_(IAMOpenProgress ,IUnknown)
|
DECLARE_INTERFACE_(IAMOpenProgress ,IUnknown)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -34,12 +34,12 @@
|
|||||||
#ifndef DIRECTSHOWIOREADER_H
|
#ifndef DIRECTSHOWIOREADER_H
|
||||||
#define DIRECTSHOWIOREADER_H
|
#define DIRECTSHOWIOREADER_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include <QtCore/qmutex.h>
|
#include <QtCore/qmutex.h>
|
||||||
#include <QtCore/qobject.h>
|
#include <QtCore/qobject.h>
|
||||||
#include <QtCore/qwaitcondition.h>
|
#include <QtCore/qwaitcondition.h>
|
||||||
|
|
||||||
#include <dshow.h>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QIODevice;
|
class QIODevice;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|||||||
@@ -192,9 +192,11 @@ QVideoSurfaceFormat::Direction DirectShowMediaType::scanLineDirection(QVideoFram
|
|||||||
case QVideoFrame::Format_BGR24:
|
case QVideoFrame::Format_BGR24:
|
||||||
case QVideoFrame::Format_RGB565:
|
case QVideoFrame::Format_RGB565:
|
||||||
case QVideoFrame::Format_RGB555:
|
case QVideoFrame::Format_RGB555:
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
return bmiHeader.biHeight < 0
|
return bmiHeader.biHeight < 0
|
||||||
? QVideoSurfaceFormat::TopToBottom
|
? QVideoSurfaceFormat::TopToBottom
|
||||||
: QVideoSurfaceFormat::BottomToTop;
|
: QVideoSurfaceFormat::BottomToTop;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
return QVideoSurfaceFormat::TopToBottom;
|
return QVideoSurfaceFormat::TopToBottom;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,9 +34,10 @@
|
|||||||
#ifndef DIRECTSHOWMEDIATYPE_H
|
#ifndef DIRECTSHOWMEDIATYPE_H
|
||||||
#define DIRECTSHOWMEDIATYPE_H
|
#define DIRECTSHOWMEDIATYPE_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include <qvideosurfaceformat.h>
|
#include <qvideosurfaceformat.h>
|
||||||
|
|
||||||
#include <dshow.h>
|
|
||||||
#include <dvdmedia.h>
|
#include <dvdmedia.h>
|
||||||
|
|
||||||
class DirectShowMediaType : public AM_MEDIA_TYPE
|
class DirectShowMediaType : public AM_MEDIA_TYPE
|
||||||
|
|||||||
@@ -34,10 +34,10 @@
|
|||||||
#ifndef DIRECTSHOWMEDIATYPELIST_H
|
#ifndef DIRECTSHOWMEDIATYPELIST_H
|
||||||
#define DIRECTSHOWMEDIATYPELIST_H
|
#define DIRECTSHOWMEDIATYPELIST_H
|
||||||
|
|
||||||
#include <QtCore/qvector.h>
|
|
||||||
|
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
|
|
||||||
|
#include <QtCore/qvector.h>
|
||||||
|
|
||||||
class DirectShowMediaTypeList : public IUnknown
|
class DirectShowMediaTypeList : public IUnknown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -31,13 +31,20 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
#ifdef min
|
||||||
|
#undef min
|
||||||
|
#endif
|
||||||
|
#ifdef max
|
||||||
|
#undef max
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <QtMultimedia/qmediametadata.h>
|
#include <QtMultimedia/qmediametadata.h>
|
||||||
#include <QtCore/qcoreapplication.h>
|
#include <QtCore/qcoreapplication.h>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <qdatetime.h>
|
#include <qdatetime.h>
|
||||||
#include <qimage.h>
|
#include <qimage.h>
|
||||||
|
|
||||||
#include <dshow.h>
|
|
||||||
#include <initguid.h>
|
#include <initguid.h>
|
||||||
#include <qnetwork.h>
|
#include <qnetwork.h>
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,8 @@
|
|||||||
#ifndef DIRECTSHOWMETADATACONTROL_H
|
#ifndef DIRECTSHOWMETADATACONTROL_H
|
||||||
#define DIRECTSHOWMETADATACONTROL_H
|
#define DIRECTSHOWMETADATACONTROL_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include <qmetadatareadercontrol.h>
|
#include <qmetadatareadercontrol.h>
|
||||||
|
|
||||||
#include "directshowglobal.h"
|
#include "directshowglobal.h"
|
||||||
|
|||||||
@@ -34,9 +34,10 @@
|
|||||||
#ifndef DIRECTSHOWPINENUM_H
|
#ifndef DIRECTSHOWPINENUM_H
|
||||||
#define DIRECTSHOWPINENUM_H
|
#define DIRECTSHOWPINENUM_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include <QtCore/qlist.h>
|
#include <QtCore/qlist.h>
|
||||||
|
|
||||||
#include <dshow.h>
|
|
||||||
|
|
||||||
class DirectShowPinEnum : public IEnumPins
|
class DirectShowPinEnum : public IEnumPins
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,6 +31,8 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include "directshowplayercontrol.h"
|
#include "directshowplayercontrol.h"
|
||||||
|
|
||||||
#include "directshowplayerservice.h"
|
#include "directshowplayerservice.h"
|
||||||
|
|||||||
@@ -34,6 +34,8 @@
|
|||||||
#ifndef DIRECTSHOWPLAYERCONTROL_H
|
#ifndef DIRECTSHOWPLAYERCONTROL_H
|
||||||
#define DIRECTSHOWPLAYERCONTROL_H
|
#define DIRECTSHOWPLAYERCONTROL_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include "qmediacontent.h"
|
#include "qmediacontent.h"
|
||||||
#include "qmediaplayercontrol.h"
|
#include "qmediaplayercontrol.h"
|
||||||
|
|
||||||
|
|||||||
@@ -31,14 +31,25 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
#ifdef min
|
||||||
|
#undef min
|
||||||
|
#endif
|
||||||
|
#ifdef max
|
||||||
|
#undef max
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "directshowplayerservice.h"
|
#include "directshowplayerservice.h"
|
||||||
|
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
#include "directshowaudioendpointcontrol.h"
|
#include "directshowaudioendpointcontrol.h"
|
||||||
#include "directshowiosource.h"
|
|
||||||
#include "directshowmetadatacontrol.h"
|
#include "directshowmetadatacontrol.h"
|
||||||
|
#include "vmr9videowindowcontrol.h"
|
||||||
|
#endif
|
||||||
|
#include "directshowiosource.h"
|
||||||
#include "directshowplayercontrol.h"
|
#include "directshowplayercontrol.h"
|
||||||
#include "directshowvideorenderercontrol.h"
|
#include "directshowvideorenderercontrol.h"
|
||||||
#include "vmr9videowindowcontrol.h"
|
|
||||||
|
|
||||||
#ifdef HAVE_EVR
|
#ifdef HAVE_EVR
|
||||||
#include "directshowevrvideowindowcontrol.h"
|
#include "directshowevrvideowindowcontrol.h"
|
||||||
@@ -79,10 +90,14 @@ private:
|
|||||||
DirectShowPlayerService::DirectShowPlayerService(QObject *parent)
|
DirectShowPlayerService::DirectShowPlayerService(QObject *parent)
|
||||||
: QMediaService(parent)
|
: QMediaService(parent)
|
||||||
, m_playerControl(0)
|
, m_playerControl(0)
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
, m_metaDataControl(0)
|
, m_metaDataControl(0)
|
||||||
|
#endif
|
||||||
, m_videoRendererControl(0)
|
, m_videoRendererControl(0)
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
, m_videoWindowControl(0)
|
, m_videoWindowControl(0)
|
||||||
, m_audioEndpointControl(0)
|
, m_audioEndpointControl(0)
|
||||||
|
#endif
|
||||||
, m_taskThread(0)
|
, m_taskThread(0)
|
||||||
, m_loop(qt_directShowEventLoop())
|
, m_loop(qt_directShowEventLoop())
|
||||||
, m_pendingTasks(0)
|
, m_pendingTasks(0)
|
||||||
@@ -106,8 +121,10 @@ DirectShowPlayerService::DirectShowPlayerService(QObject *parent)
|
|||||||
, m_dontCacheNextSeekResult(false)
|
, m_dontCacheNextSeekResult(false)
|
||||||
{
|
{
|
||||||
m_playerControl = new DirectShowPlayerControl(this);
|
m_playerControl = new DirectShowPlayerControl(this);
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
m_metaDataControl = new DirectShowMetaDataControl(this);
|
m_metaDataControl = new DirectShowMetaDataControl(this);
|
||||||
m_audioEndpointControl = new DirectShowAudioEndpointControl(this);
|
m_audioEndpointControl = new DirectShowAudioEndpointControl(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
m_taskThread = new DirectShowPlayerServiceThread(this);
|
m_taskThread = new DirectShowPlayerServiceThread(this);
|
||||||
m_taskThread->start();
|
m_taskThread->start();
|
||||||
@@ -138,10 +155,14 @@ DirectShowPlayerService::~DirectShowPlayerService()
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete m_playerControl;
|
delete m_playerControl;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
delete m_audioEndpointControl;
|
delete m_audioEndpointControl;
|
||||||
delete m_metaDataControl;
|
delete m_metaDataControl;
|
||||||
|
#endif
|
||||||
delete m_videoRendererControl;
|
delete m_videoRendererControl;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
delete m_videoWindowControl;
|
delete m_videoWindowControl;
|
||||||
|
#endif
|
||||||
|
|
||||||
::CloseHandle(m_taskHandle);
|
::CloseHandle(m_taskHandle);
|
||||||
}
|
}
|
||||||
@@ -150,12 +171,18 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
|
|||||||
{
|
{
|
||||||
if (qstrcmp(name, QMediaPlayerControl_iid) == 0) {
|
if (qstrcmp(name, QMediaPlayerControl_iid) == 0) {
|
||||||
return m_playerControl;
|
return m_playerControl;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
} else if (qstrcmp(name, QAudioOutputSelectorControl_iid) == 0) {
|
} else if (qstrcmp(name, QAudioOutputSelectorControl_iid) == 0) {
|
||||||
return m_audioEndpointControl;
|
return m_audioEndpointControl;
|
||||||
} else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) {
|
} else if (qstrcmp(name, QMetaDataReaderControl_iid) == 0) {
|
||||||
return m_metaDataControl;
|
return m_metaDataControl;
|
||||||
|
#endif
|
||||||
} else if (qstrcmp(name, QVideoRendererControl_iid) == 0) {
|
} else if (qstrcmp(name, QVideoRendererControl_iid) == 0) {
|
||||||
if (!m_videoRendererControl && !m_videoWindowControl) {
|
if (!m_videoRendererControl
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
|
&& !m_videoWindowControl
|
||||||
|
#endif
|
||||||
|
){
|
||||||
m_videoRendererControl = new DirectShowVideoRendererControl(m_loop);
|
m_videoRendererControl = new DirectShowVideoRendererControl(m_loop);
|
||||||
|
|
||||||
connect(m_videoRendererControl, SIGNAL(filterChanged()),
|
connect(m_videoRendererControl, SIGNAL(filterChanged()),
|
||||||
@@ -163,6 +190,7 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
|
|||||||
|
|
||||||
return m_videoRendererControl;
|
return m_videoRendererControl;
|
||||||
}
|
}
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
} else if (qstrcmp(name, QVideoWindowControl_iid) == 0) {
|
} else if (qstrcmp(name, QVideoWindowControl_iid) == 0) {
|
||||||
if (!m_videoRendererControl && !m_videoWindowControl) {
|
if (!m_videoRendererControl && !m_videoWindowControl) {
|
||||||
IBaseFilter *filter;
|
IBaseFilter *filter;
|
||||||
@@ -185,6 +213,7 @@ QMediaControl *DirectShowPlayerService::requestControl(const char *name)
|
|||||||
|
|
||||||
return m_videoWindowControl;
|
return m_videoWindowControl;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -200,12 +229,14 @@ void DirectShowPlayerService::releaseControl(QMediaControl *control)
|
|||||||
delete m_videoRendererControl;
|
delete m_videoRendererControl;
|
||||||
|
|
||||||
m_videoRendererControl = 0;
|
m_videoRendererControl = 0;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
} else if (control == m_videoWindowControl) {
|
} else if (control == m_videoWindowControl) {
|
||||||
setVideoOutput(0);
|
setVideoOutput(0);
|
||||||
|
|
||||||
delete m_videoWindowControl;
|
delete m_videoWindowControl;
|
||||||
|
|
||||||
m_videoWindowControl = 0;
|
m_videoWindowControl = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +262,9 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream
|
|||||||
m_seekable = false;
|
m_seekable = false;
|
||||||
m_atEnd = false;
|
m_atEnd = false;
|
||||||
m_dontCacheNextSeekResult = false;
|
m_dontCacheNextSeekResult = false;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
m_metaDataControl->reset();
|
m_metaDataControl->reset();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_resources.isEmpty() && !stream) {
|
if (m_resources.isEmpty() && !stream) {
|
||||||
m_pendingTasks = 0;
|
m_pendingTasks = 0;
|
||||||
@@ -1135,7 +1168,9 @@ void DirectShowPlayerService::customEvent(QEvent *event)
|
|||||||
QMutexLocker locker(&m_mutex);
|
QMutexLocker locker(&m_mutex);
|
||||||
|
|
||||||
m_playerControl->updateMediaInfo(m_duration, m_streamTypes, m_seekable);
|
m_playerControl->updateMediaInfo(m_duration, m_streamTypes, m_seekable);
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
m_metaDataControl->updateMetadata(m_graph, m_source, m_url.toString());
|
m_metaDataControl->updateMetadata(m_graph, m_source, m_url.toString());
|
||||||
|
#endif
|
||||||
|
|
||||||
updateStatus();
|
updateStatus();
|
||||||
} else if (event->type() == QEvent::Type(Error)) {
|
} else if (event->type() == QEvent::Type(Error)) {
|
||||||
|
|||||||
@@ -34,6 +34,8 @@
|
|||||||
#ifndef DIRECTSHOWPLAYERSERVICE_H
|
#ifndef DIRECTSHOWPLAYERSERVICE_H
|
||||||
#define DIRECTSHOWPLAYERSERVICE_H
|
#define DIRECTSHOWPLAYERSERVICE_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include "qmediaplayer.h"
|
#include "qmediaplayer.h"
|
||||||
#include "qmediaresource.h"
|
#include "qmediaresource.h"
|
||||||
#include "qmediaservice.h"
|
#include "qmediaservice.h"
|
||||||
@@ -168,10 +170,14 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
DirectShowPlayerControl *m_playerControl;
|
DirectShowPlayerControl *m_playerControl;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
DirectShowMetaDataControl *m_metaDataControl;
|
DirectShowMetaDataControl *m_metaDataControl;
|
||||||
|
#endif
|
||||||
DirectShowVideoRendererControl *m_videoRendererControl;
|
DirectShowVideoRendererControl *m_videoRendererControl;
|
||||||
|
#ifndef Q_OS_WINCE
|
||||||
QVideoWindowControl *m_videoWindowControl;
|
QVideoWindowControl *m_videoWindowControl;
|
||||||
DirectShowAudioEndpointControl *m_audioEndpointControl;
|
DirectShowAudioEndpointControl *m_audioEndpointControl;
|
||||||
|
#endif
|
||||||
|
|
||||||
QThread *m_taskThread;
|
QThread *m_taskThread;
|
||||||
DirectShowEventLoop *m_loop;
|
DirectShowEventLoop *m_loop;
|
||||||
|
|||||||
@@ -34,12 +34,12 @@
|
|||||||
#ifndef DIRECTSHOWSAMPLESCHEDULER_H
|
#ifndef DIRECTSHOWSAMPLESCHEDULER_H
|
||||||
#define DIRECTSHOWSAMPLESCHEDULER_H
|
#define DIRECTSHOWSAMPLESCHEDULER_H
|
||||||
|
|
||||||
|
#include <dshow.h>
|
||||||
|
|
||||||
#include <QtCore/qmutex.h>
|
#include <QtCore/qmutex.h>
|
||||||
#include <QtCore/qobject.h>
|
#include <QtCore/qobject.h>
|
||||||
#include <QtCore/qsemaphore.h>
|
#include <QtCore/qsemaphore.h>
|
||||||
|
|
||||||
#include <dshow.h>
|
|
||||||
|
|
||||||
class DirectShowTimedSample;
|
class DirectShowTimedSample;
|
||||||
|
|
||||||
class DirectShowSampleScheduler : public QObject, public IMemInputPin
|
class DirectShowSampleScheduler : public QObject, public IMemInputPin
|
||||||
|
|||||||
@@ -34,10 +34,10 @@
|
|||||||
#ifndef DIRECTSHOWVIDEORENDERERCONTROL_H
|
#ifndef DIRECTSHOWVIDEORENDERERCONTROL_H
|
||||||
#define DIRECTSHOWVIDEORENDERERCONTROL_H
|
#define DIRECTSHOWVIDEORENDERERCONTROL_H
|
||||||
|
|
||||||
#include "qvideorenderercontrol.h"
|
|
||||||
|
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
|
|
||||||
|
#include "qvideorenderercontrol.h"
|
||||||
|
|
||||||
class DirectShowEventLoop;
|
class DirectShowEventLoop;
|
||||||
|
|
||||||
QT_USE_NAMESPACE
|
QT_USE_NAMESPACE
|
||||||
|
|||||||
@@ -34,10 +34,10 @@
|
|||||||
#ifndef MEDIASAMPLEVIDEOBUFFER_H
|
#ifndef MEDIASAMPLEVIDEOBUFFER_H
|
||||||
#define MEDIASAMPLEVIDEOBUFFER_H
|
#define MEDIASAMPLEVIDEOBUFFER_H
|
||||||
|
|
||||||
#include <qabstractvideobuffer.h>
|
|
||||||
|
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
|
|
||||||
|
#include <qabstractvideobuffer.h>
|
||||||
|
|
||||||
class MediaSampleVideoBuffer : public QAbstractVideoBuffer
|
class MediaSampleVideoBuffer : public QAbstractVideoBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -1,45 +1,53 @@
|
|||||||
INCLUDEPATH += $$PWD
|
INCLUDEPATH += $$PWD
|
||||||
|
|
||||||
LIBS += -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32 -lgdi32
|
LIBS += -lstrmiids -ldmoguids -luuid -lole32 -loleaut32
|
||||||
|
!wince: LIBS += -lmsdmo -lgdi32
|
||||||
|
|
||||||
|
|
||||||
qtHaveModule(widgets): QT += widgets
|
qtHaveModule(widgets): QT += widgets
|
||||||
|
|
||||||
DEFINES += QMEDIA_DIRECTSHOW_PLAYER
|
DEFINES += QMEDIA_DIRECTSHOW_PLAYER
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$PWD/directshowaudioendpointcontrol.h \
|
|
||||||
$$PWD/directshoweventloop.h \
|
$$PWD/directshoweventloop.h \
|
||||||
$$PWD/directshowglobal.h \
|
$$PWD/directshowglobal.h \
|
||||||
$$PWD/directshowioreader.h \
|
$$PWD/directshowioreader.h \
|
||||||
$$PWD/directshowiosource.h \
|
$$PWD/directshowiosource.h \
|
||||||
$$PWD/directshowmediatype.h \
|
$$PWD/directshowmediatype.h \
|
||||||
$$PWD/directshowmediatypelist.h \
|
$$PWD/directshowmediatypelist.h \
|
||||||
$$PWD/directshowmetadatacontrol.h \
|
|
||||||
$$PWD/directshowpinenum.h \
|
$$PWD/directshowpinenum.h \
|
||||||
$$PWD/directshowplayercontrol.h \
|
$$PWD/directshowplayercontrol.h \
|
||||||
$$PWD/directshowplayerservice.h \
|
$$PWD/directshowplayerservice.h \
|
||||||
$$PWD/directshowsamplescheduler.h \
|
$$PWD/directshowsamplescheduler.h \
|
||||||
$$PWD/directshowvideorenderercontrol.h \
|
$$PWD/directshowvideorenderercontrol.h \
|
||||||
$$PWD/mediasamplevideobuffer.h \
|
$$PWD/mediasamplevideobuffer.h \
|
||||||
$$PWD/videosurfacefilter.h \
|
$$PWD/videosurfacefilter.h
|
||||||
$$PWD/vmr9videowindowcontrol.h
|
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/directshowaudioendpointcontrol.cpp \
|
|
||||||
$$PWD/directshoweventloop.cpp \
|
$$PWD/directshoweventloop.cpp \
|
||||||
$$PWD/directshowioreader.cpp \
|
$$PWD/directshowioreader.cpp \
|
||||||
$$PWD/directshowiosource.cpp \
|
$$PWD/directshowiosource.cpp \
|
||||||
$$PWD/directshowmediatype.cpp \
|
$$PWD/directshowmediatype.cpp \
|
||||||
$$PWD/directshowmediatypelist.cpp \
|
$$PWD/directshowmediatypelist.cpp \
|
||||||
$$PWD/directshowmetadatacontrol.cpp \
|
|
||||||
$$PWD/directshowpinenum.cpp \
|
$$PWD/directshowpinenum.cpp \
|
||||||
$$PWD/directshowplayercontrol.cpp \
|
$$PWD/directshowplayercontrol.cpp \
|
||||||
$$PWD/directshowplayerservice.cpp \
|
$$PWD/directshowplayerservice.cpp \
|
||||||
$$PWD/directshowsamplescheduler.cpp \
|
$$PWD/directshowsamplescheduler.cpp \
|
||||||
$$PWD/directshowvideorenderercontrol.cpp \
|
$$PWD/directshowvideorenderercontrol.cpp \
|
||||||
$$PWD/mediasamplevideobuffer.cpp \
|
$$PWD/mediasamplevideobuffer.cpp \
|
||||||
$$PWD/videosurfacefilter.cpp \
|
$$PWD/videosurfacefilter.cpp
|
||||||
|
|
||||||
|
!wince {
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/directshowaudioendpointcontrol.h \
|
||||||
|
$$PWD/directshowmetadatacontrol.h \
|
||||||
|
$$PWD/vmr9videowindowcontrol.h
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
$$PWD/directshowaudioendpointcontrol.cpp \
|
||||||
|
$$PWD/directshowmetadatacontrol.cpp \
|
||||||
$$PWD/vmr9videowindowcontrol.cpp
|
$$PWD/vmr9videowindowcontrol.cpp
|
||||||
|
}
|
||||||
|
|
||||||
config_evr {
|
config_evr {
|
||||||
DEFINES += HAVE_EVR
|
DEFINES += HAVE_EVR
|
||||||
|
|||||||
Reference in New Issue
Block a user