63 lines
1.3 KiB
C
63 lines
1.3 KiB
C
|
#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
|