FFmpegSource2: more portability

Originally committed to SVN as r2355.
This commit is contained in:
Fredrik Mellbin 2008-09-14 18:21:59 +00:00
parent 811483bc7a
commit 78d4c92a89
6 changed files with 58 additions and 44 deletions

View file

@ -21,6 +21,46 @@
#include "ffswscale.h" #include "ffswscale.h"
#include "utils.h" #include "utils.h"
int CSNameToPIXFMT(const char * ACSName, int ADefault) {
if (!_stricmp(ACSName, ""))
return ADefault;
if (!_stricmp(ACSName, "YV12"))
return PIX_FMT_YUV420P;
if (!_stricmp(ACSName, "YUY2"))
return PIX_FMT_YUYV422;
if (!_stricmp(ACSName, "RGB24"))
return PIX_FMT_BGR24;
if (!_stricmp(ACSName, "RGB32"))
return PIX_FMT_RGB32;
return PIX_FMT_NONE;
}
int ResizerNameToSWSResizer(const char *AResizerName) {
if (!_stricmp(AResizerName, "FAST_BILINEAR"))
return SWS_FAST_BILINEAR;
if (!_stricmp(AResizerName, "BILINEAR"))
return SWS_BILINEAR;
if (!_stricmp(AResizerName, "BICUBIC"))
return SWS_BICUBIC;
if (!_stricmp(AResizerName, "X"))
return SWS_X;
if (!_stricmp(AResizerName, "POINT"))
return SWS_POINT;
if (!_stricmp(AResizerName, "AREA"))
return SWS_AREA;
if (!_stricmp(AResizerName, "BICUBLIN"))
return SWS_BICUBLIN;
if (!_stricmp(AResizerName, "GAUSS"))
return SWS_GAUSS;
if (!_stricmp(AResizerName, "SINC"))
return SWS_SINC;
if (!_stricmp(AResizerName, "LANCZOS"))
return SWS_LANCZOS;
if (!_stricmp(AResizerName, "SPLINE"))
return SWS_SPLINE;
return 0;
}
SWScale::SWScale(PClip Child, int ResizeToWidth, int ResizeToHeight, const char *ResizerName, const char *ConvertToFormatName, IScriptEnvironment *Env) : GenericVideoFilter(Child) { SWScale::SWScale(PClip Child, int ResizeToWidth, int ResizeToHeight, const char *ResizerName, const char *ConvertToFormatName, IScriptEnvironment *Env) : GenericVideoFilter(Child) {
Context = NULL; Context = NULL;
OrigWidth = vi.width; OrigWidth = vi.width;

View file

@ -27,6 +27,11 @@
#include "indexing.h" #include "indexing.h"
#include "wave64writer.h" #include "wave64writer.h"
#ifndef WIN32
# define _ftelli64 ftello
# define _fseeki64 fseeko
#endif
class AudioContext { class AudioContext {
public: public:
Wave64Writer *W64W; Wave64Writer *W64W;

View file

@ -20,6 +20,11 @@
#include "stdiostream.h" #include "stdiostream.h"
#ifndef WIN32
# define _ftelli64 ftello
# define _fseeki64 fseeko
#endif
/* StdIoStream methods */ /* StdIoStream methods */
/* read count bytes into buffer starting at file position pos /* read count bytes into buffer starting at file position pos

View file

@ -22,6 +22,11 @@
#include <string.h> #include <string.h>
#include <intrin.h> #include <intrin.h>
#ifndef WIN32
# define _ftelli64 ftello
# define _fseeki64 fseeko
#endif
int GetCPUFlags() { int GetCPUFlags() {
int CPUInfo[4]; int CPUInfo[4];
__cpuid(CPUInfo, 0); __cpuid(CPUInfo, 0);
@ -37,46 +42,6 @@ int GetCPUFlags() {
return Flags; return Flags;
} }
int CSNameToPIXFMT(const char * ACSName, int ADefault) {
if (!_strcmpi(ACSName, ""))
return ADefault;
if (!_strcmpi(ACSName, "YV12"))
return PIX_FMT_YUV420P;
if (!_strcmpi(ACSName, "YUY2"))
return PIX_FMT_YUYV422;
if (!_strcmpi(ACSName, "RGB24"))
return PIX_FMT_BGR24;
if (!_strcmpi(ACSName, "RGB32"))
return PIX_FMT_RGB32;
return PIX_FMT_NONE;
}
int ResizerNameToSWSResizer(const char *AResizerName) {
if (!_strcmpi(AResizerName, "FAST_BILINEAR"))
return SWS_FAST_BILINEAR;
if (!_strcmpi(AResizerName, "BILINEAR"))
return SWS_BILINEAR;
if (!_strcmpi(AResizerName, "BICUBIC"))
return SWS_BICUBIC;
if (!_strcmpi(AResizerName, "X"))
return SWS_X;
if (!_strcmpi(AResizerName, "POINT"))
return SWS_POINT;
if (!_strcmpi(AResizerName, "AREA"))
return SWS_AREA;
if (!_strcmpi(AResizerName, "BICUBLIN"))
return SWS_BICUBLIN;
if (!_strcmpi(AResizerName, "GAUSS"))
return SWS_GAUSS;
if (!_strcmpi(AResizerName, "SINC"))
return SWS_SINC;
if (!_strcmpi(AResizerName, "LANCZOS"))
return SWS_LANCZOS;
if (!_strcmpi(AResizerName, "SPLINE"))
return SWS_SPLINE;
return 0;
}
int ReadFrame(uint64_t FilePos, unsigned int &FrameSize, CompressedStream *CS, MatroskaReaderContext &Context, char *ErrorMsg, unsigned MsgSize) { int ReadFrame(uint64_t FilePos, unsigned int &FrameSize, CompressedStream *CS, MatroskaReaderContext &Context, char *ErrorMsg, unsigned MsgSize) {
if (CS) { if (CS) {
char CSBuffer[4096]; char CSBuffer[4096];

View file

@ -48,8 +48,6 @@ public:
}; };
int GetCPUFlags(); int GetCPUFlags();
int CSNameToPIXFMT(const char * ACSName, int ADefault);
int ResizerNameToSWSResizer(const char *AResizerName);
int ReadFrame(uint64_t FilePos, unsigned int &FrameSize, CompressedStream *CS, MatroskaReaderContext &Context, char *ErrorMsg, unsigned MsgSize); int ReadFrame(uint64_t FilePos, unsigned int &FrameSize, CompressedStream *CS, MatroskaReaderContext &Context, char *ErrorMsg, unsigned MsgSize);
bool AudioFMTIsFloat(SampleFormat FMT); bool AudioFMTIsFloat(SampleFormat FMT);
CodecID MatroskaToFFCodecID(TrackInfo *TI); CodecID MatroskaToFFCodecID(TrackInfo *TI);

View file

@ -19,6 +19,7 @@
// THE SOFTWARE. // THE SOFTWARE.
#include "wave64writer.h" #include "wave64writer.h"
#include <string.h>
#define WAVE_FORMAT_IEEE_FLOAT 0x0003 #define WAVE_FORMAT_IEEE_FLOAT 0x0003
#define WAVE_FORMAT_PCM 1 #define WAVE_FORMAT_PCM 1
@ -80,7 +81,7 @@ void Wave64Writer::WriteHeader(bool Initial, bool IsFloat) {
memcpy(Header + 0, GuidRIFF, 16); memcpy(Header + 0, GuidRIFF, 16);
if (Initial) { if (Initial) {
Header[2] = 0x7F00000000000000; Header[2] = 0x7F00000000000000ull;
} else { } else {
Header[2] = BytesWritten + sizeof(Header); Header[2] = BytesWritten + sizeof(Header);
} }
@ -95,7 +96,7 @@ void Wave64Writer::WriteHeader(bool Initial, bool IsFloat) {
memcpy(Header + 11, Guiddata, 16); memcpy(Header + 11, Guiddata, 16);
if (Initial) if (Initial)
Header[13] = 0x7E00000000000000; Header[13] = 0x7E00000000000000ull;
else else
Header[13] = BytesWritten + 24; Header[13] = BytesWritten + 24;