1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-06 23:21:54 +00:00

error handling

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1559 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
arpi 2001-08-16 18:27:03 +00:00
parent 970f3c2f47
commit e366304055

View File

@ -26,17 +26,28 @@
#else #else
// code for mplayer team // 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/mmreg.h>
#include <wine/winreg.h> #include <wine/winreg.h>
#include <wine/vfw.h> #include <wine/vfw.h>
#include <com.h> #include <com.h>
#include <stdarg.h>
#include <string> #include <string>
#include <stdio.h>
typedef unsigned int fourcc_t; typedef unsigned int fourcc_t;
struct FatalError 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() {} void PrintAll() {}
}; };
@ -277,10 +288,15 @@ struct IVideoDecoder
} }
virtual ~IVideoDecoder(){}; virtual ~IVideoDecoder(){};
virtual void StartInternal()=0; // use this one
virtual void StopInternal()=0; 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 Stop(){ StopInternal(); m_State = STOP;}
void Start(){StartInternal(); m_State = START;} 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; const CodecInfo& record;
DecodingMode m_Mode; // should we do precaching (or even change Quality on the fly) DecodingMode m_Mode; // should we do precaching (or even change Quality on the fly)