| 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
 |