1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef NULLSOFT_VIDEOLAYERH
- #define NULLSOFT_VIDEOLAYERH
- #include "WMHandler.h"
- #include "OutputStream.h"
- #include <wmsdk.h>
- #include "VideoDataConverter.h"
- #include "Config.h"
- #include "VideoThread.h"
- #define VIDEO_ACCEPTABLE_JITTER (config_video_jitter*10000)
- #define VIDEO_ACCEPTABLE_JITTER_MS (config_video_jitter)
- class VideoLayer : public WMHandler
- {
- public:
- VideoLayer(IWMReader *_reader);
- ~VideoLayer();
- bool IsOpen();
- void Kill();
- private:
- // WMHandler
- void VideoFrameDrop(DWORD lateness);
- void SampleReceived(QWORD &timeStamp, QWORD &duration, unsigned long &outputNum, unsigned long &flags, INSSBuffer *&sample);
- void Opened();
- void AudioBufferMilliseconds(long ms);
- void Closed();
- void Started();
- void Stopped();
- void HasVideo(bool &video);
- // utility methods
- bool AttemptOpenVideo(VideoOutputStream *attempt);
- bool OpenVideo();
-
- // other people's data
- IWMReader *reader;
- // our data
- IWMReaderAdvanced2 *reader2;
- IWMHeaderInfo *header;
- int videoOutputNum;
- DWORD offset;
- long nextRest;
- VideoDataConverter *converter;
- VideoOutputStream *videoStream;
-
- bool videoOpened;
- QWORD catchupTime;
- double aspect;
- int fourcc;
- bool flip;
- int videoWidth, videoHeight;
- HANDLE killSwitch;
- DWORD earlyDelivery;
- bool drmProtected;
- bool video_output_opened;
- VideoThread videoThread;
- };
- #endif
|