diff options
-rw-r--r-- | loader/dshow/libwin32.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/loader/dshow/libwin32.h b/loader/dshow/libwin32.h index 26a3fbc792..592fe9d454 100644 --- a/loader/dshow/libwin32.h +++ b/loader/dshow/libwin32.h @@ -26,17 +26,28 @@ #else // code for mplayer team -#define FATAL(a) // you don't need exception - if you want - just fill more code +//#define FATAL(a) // you don't need exception - if you want - just fill more code +#define FATAL(X...) FatalError(__MODULE__,__FILE__,__LINE__,X) #include <wine/mmreg.h> #include <wine/winreg.h> #include <wine/vfw.h> #include <com.h> +#include <stdarg.h> #include <string> +#include <stdio.h> typedef unsigned int fourcc_t; + struct FatalError { - FatalError(); + FatalError(const char* mod, const char* f, int l, const char* desc,...) + { + printf("FATAL: module: %s source: %s line %d ", mod, f, l); + va_list va; + va_start(va, desc); + vprintf(desc, va); + va_end(va); + } void PrintAll() {} }; @@ -277,10 +288,15 @@ struct IVideoDecoder } virtual ~IVideoDecoder(){}; - virtual void StartInternal()=0; - virtual void StopInternal()=0; + // use this one + int Decode(void* src, size_t size, int is_keyframe, CImage* pImage) + { return DecodeInternal(src, size, is_keyframe, pImage); } void Stop(){ StopInternal(); m_State = STOP;} void Start(){StartInternal(); m_State = START;} + protected: + virtual int DecodeInternal(void* src, size_t size, int is_keyframe, CImage* pImage) = 0; + virtual void StartInternal()=0; + virtual void StopInternal()=0; const CodecInfo& record; DecodingMode m_Mode; // should we do precaching (or even change Quality on the fly) |