qtmobility/plugins/multimedia/directshow/player/directshowplayerservice.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    40 ****************************************************************************/
    40 ****************************************************************************/
    41 
    41 
    42 #ifndef DIRECTSHOWPLAYERSERVICE_H
    42 #ifndef DIRECTSHOWPLAYERSERVICE_H
    43 #define DIRECTSHOWPLAYERSERVICE_H
    43 #define DIRECTSHOWPLAYERSERVICE_H
    44 
    44 
    45 #include <qmediaplayer.h>
    45 #include "../../src/multimedia/qmediaplayer.h"
    46 #include <qmediaresource.h>
    46 #include "../../src/multimedia/qmediaresource.h"
    47 #include <qmediaservice.h>
    47 #include "../../src/multimedia/qmediaservice.h"
    48 #include <qmediatimerange.h>
    48 #include "../../src/multimedia/qmediatimerange.h"
    49 
    49 
    50 #include "directshoweventloop.h"
    50 #include "directshoweventloop.h"
    51 #include "directshowglobal.h"
    51 #include "directshowglobal.h"
    52 
    52 
    53 #include <QtCore/qcoreevent.h>
    53 #include <QtCore/qcoreevent.h>
   111 
   111 
   112     int findStreamTypes(IBaseFilter *source) const;
   112     int findStreamTypes(IBaseFilter *source) const;
   113     int findStreamType(IPin *pin) const;
   113     int findStreamType(IPin *pin) const;
   114 
   114 
   115     bool isConnected(IBaseFilter *filter, PIN_DIRECTION direction) const;
   115     bool isConnected(IBaseFilter *filter, PIN_DIRECTION direction) const;
       
   116     IBaseFilter *getConnected(IBaseFilter *filter, PIN_DIRECTION direction) const;
   116 
   117 
   117     void run();
   118     void run();
   118 
   119 
   119     void doSetUrlSource(QMutexLocker *locker);
   120     void doSetUrlSource(QMutexLocker *locker);
   120     void doSetStreamSource(QMutexLocker *locker);
   121     void doSetStreamSource(QMutexLocker *locker);
   122     void doFinalizeLoad(QMutexLocker *locker);
   123     void doFinalizeLoad(QMutexLocker *locker);
   123     void doSetRate(QMutexLocker *locker);
   124     void doSetRate(QMutexLocker *locker);
   124     void doSeek(QMutexLocker *locker);
   125     void doSeek(QMutexLocker *locker);
   125     void doPlay(QMutexLocker *locker);
   126     void doPlay(QMutexLocker *locker);
   126     void doPause(QMutexLocker *locker);
   127     void doPause(QMutexLocker *locker);
       
   128     void doStop(QMutexLocker *locker);
   127     void doReleaseAudioOutput(QMutexLocker *locker);
   129     void doReleaseAudioOutput(QMutexLocker *locker);
   128     void doReleaseVideoOutput(QMutexLocker *locker);
   130     void doReleaseVideoOutput(QMutexLocker *locker);
   129     void doReleaseGraph(QMutexLocker *locker);
   131     void doReleaseGraph(QMutexLocker *locker);
   130 
   132 
   131     void graphEvent(QMutexLocker *locker);
   133     void graphEvent(QMutexLocker *locker);
   159         RateChange,
   161         RateChange,
   160         Started,
   162         Started,
   161         Paused,
   163         Paused,
   162         DurationChange,
   164         DurationChange,
   163         StatusChange,
   165         StatusChange,
   164         EndOfMedia
   166         EndOfMedia,
       
   167         PositionChange
   165     };
   168     };
   166 
   169 
   167     enum GraphStatus
   170     enum GraphStatus
   168     {
   171     {
   169         NoMedia,
   172         NoMedia,
   178     DirectShowVideoRendererControl *m_videoRendererControl;
   181     DirectShowVideoRendererControl *m_videoRendererControl;
   179     Vmr9VideoWindowControl *m_videoWindowControl;
   182     Vmr9VideoWindowControl *m_videoWindowControl;
   180     DirectShowAudioEndpointControl *m_audioEndpointControl;
   183     DirectShowAudioEndpointControl *m_audioEndpointControl;
   181 
   184 
   182     QThread *m_taskThread;
   185     QThread *m_taskThread;
       
   186     DirectShowEventLoop *m_loop;
   183     int m_pendingTasks;
   187     int m_pendingTasks;
   184     int m_executingTask;
   188     int m_executingTask;
   185     int m_executedTasks;
   189     int m_executedTasks;
   186     HANDLE m_taskHandle;
   190     HANDLE m_taskHandle;
   187     HANDLE m_eventHandle;
   191     HANDLE m_eventHandle;
   200     bool m_seekable;
   204     bool m_seekable;
   201     bool m_atEnd;
   205     bool m_atEnd;
   202     QMediaTimeRange m_playbackRange;
   206     QMediaTimeRange m_playbackRange;
   203     QUrl m_url;
   207     QUrl m_url;
   204     QMediaResourceList m_resources;
   208     QMediaResourceList m_resources;
       
   209     QString m_errorString;
   205     QMutex m_mutex;
   210     QMutex m_mutex;
   206     DirectShowEventLoop m_loop;
       
   207 
   211 
   208     friend class DirectShowPlayerServiceThread;
   212     friend class DirectShowPlayerServiceThread;
   209 };
   213 };
   210 
   214 
   211 
   215