VC 使用mingw32编译ffmpeg静态库所需文件(二),mingwexsrc.cpp

来源:互联网 发布:中国软件行业协会招聘 编辑:程序博客网 时间:2024/05/17 07:55

VC 使用mingw32编译ffmpeg静态库所需文件(二),mingwexsrc.cpp

哈哈,这是我从一些项目里面看到的,这些函数是ffmpeg.a缺少的函数。估计大家会用得上.

当然我移植的的项目都不需要这些,因为我是用VC编译,所以不存在缺少mingw32里面的函数.

// mingwexsource.cpp// ---------------------// This file is to define and fill in libmingwex.a functions// This is not a complete list by any means, and was coded due to incompatabilities of libmingwex.a// With MSVC.  This file was created by Justin Ahn, and any questions can be directed to justin@soonahn.ca//#define WIN32_LEAN_AND_MEAN#define _CRTIMP#include <windows.h>#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <time.h>#include <errno.h>#include <float.h>#include <math.h>#include <io.h>#include <sys/timeb.h>#include <time.h>#ifdef __cplusplusextern "C" {#endifextern int __cdecl _fpclass (double);/*#ifndef _ieeemisc_.objint __cdecl _fpclassf (float x) {   return _fpclass(double(x));}#elseextern int __cdecl _fpclassf (float);#endif*/int __cdecl _fpclassf (float x) {   return _fpclass(double(x));}int __cdecl _fpclassl (long double x) {   return _fpclass(double(x));}int __cdecl __fpclassify (float x) {   return _fpclass(double(x));}#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)   #define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64#else   #define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL#endif#define fpclass(x) (sizeof (x) == sizeof (float) ? _fpclassf (x)     \  : sizeof (x) == sizeof (double) ? _fpclass (x) \  : _fpclassl (x))#ifndef _WINSOCK2API_struct timeval {    long tv_sec;    long tv_usec;};#endif#define isfinite(x) ((fpclass(x) & FP_NAN) == 0)#define FP_NAN      0x0100#define FP_NORMAL   0x0400#define FP_ZERO      0x4000#define APICHAR char#define PFORMAT_NOLIMIT     0x4000extern int __cdecl _fstat64 (int,struct _stat64*);extern void __cdecl _ftime (struct __timeb64*);extern __int64 __cdecl _strtoi64 (const char * _String, char ** _EndPtr, int _Radix);extern float __cdecl log10f (float);extern float __cdecl sqrtf (float);extern double __cdecl round (double);extern float __cdecl cosf (float);extern float __cdecl sinf (float);extern float __cdecl log2f (float);extern float __cdecl atan2f (float, float);extern float __cdecl atanf (float);extern double  __cdecl log(double);extern __int64 __cdecl _filelengthi64 (int);extern char* __cdecl gai_strerrorA (int);typedef long _off64_t;typedef long off64_t;struct timezone {    int  tz_minuteswest; /* minutes W of Greenwich */    int  tz_dsttime;     /* type of dst correction */};float __cdecl truncf(float n) {    return n > 0.0 ? floorf(n) : ceilf(n);}int __cdecl __imp___fstat64(__in int _FileDes, __out struct _stat64 * _Stat) {   return _fstat64(_FileDes, _Stat);}void __cdecl __imp___ftime64(__out struct __timeb64 *_Time) {   _ftime(_Time);}/*int __cdecl __imp_getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res) {   return getaddrinfo(node, service, hints, res);}*/double log2(double n) {     return log(n)/log(2.0); }float log2f(float n) {     return logf(n)/logf(2.0); }float exp2f(float n) {   return powf(2.0, n);}float roundf(float x){return floor(x + 0.5f);}int __cdecl snprintf(char* buffer, size_t n, const char *format, ...){  int retval;  va_list argptr;  va_start(argptr, format);  retval = _vsnprintf (buffer, n, format, argptr);  va_end(argptr);  return retval;}long long __cdecl strtoll (const char* __restrict nptr, char ** __restrict endptr, int base){   return _strtoi64(nptr, endptr, base);}static const float CBRT2 = 1.25992104989487316477f;static const float CBRT4 = 1.58740105196819947475f;float cbrtf (float x) {        int e, rem, sign;        float z;      if (!isfinite (x) || x == 0.0F)                return x;        if (x > 0)                sign = 1;        else        {                sign = -1;                x = -x;        }        z = x;        // extract power of 2, leaving                                                                                                     // mantissa between 0.5 and 1                                                                                                       //        x = frexpf(x, &e);        // Approximate cube root of number between .5 and 1,                                                                               // peak relative error = 9.2e-6                                                                                                     //        x = (((-0.13466110473359520655053f  * x              + 0.54664601366395524503440f ) * x              - 0.95438224771509446525043f ) * x              + 1.1399983354717293273738f  ) * x              + 0.40238979564544752126924f;        // exponent divided by 3        if (e >= 0)        {                rem = e;                e /= 3;                rem -= 3*e;                if (rem == 1)                        x *= CBRT2;                else if (rem == 2)                        x *= CBRT4;        }// argument less than 1        else        {                e = -e;                rem = e;                e /= 3;                rem -= 3*e;                if (rem == 1)                        x /= CBRT2;                else if (rem == 2)                        x /= CBRT4;                e = -e;        }        // multiply by power of 2        x = ldexpf(x, e);        // Newton iteration        x -= ( x - (z/(x*x)) ) * 0.333333333333f;        if (sign < 0)                x = -x;        return (x);}double round (double x) {  double res;  if (x >= 0.0)    {      res = ceil (x);      if (res - x > 0.5)        res -= 1.0;    }  else    {      res = ceil (-x);      if (res + x > 0.5)        res -= 1.0;      res = -res;    }  return res;}int fseeko64 (FILE* stream, _off64_t offset, int whence) {  fpos_t pos;  if (whence == SEEK_CUR)    {      // If stream is invalid, fgetpos sets errno.      if (fgetpos (stream, &pos))        return (-1);      pos += (fpos_t) offset;    }  else if (whence == SEEK_END)    {      // If writing, we need to flush before getting file length.      fflush (stream);      pos = (fpos_t) (_filelengthi64 (_fileno (stream)) + offset);    }  else if (whence == SEEK_SET)    pos = (fpos_t) offset;  else    {      errno = EINVAL;      return (-1);    }  return fsetpos (stream, &pos);}_off64_t ftello64 (FILE * stream) {  fpos_t pos;  if (fgetpos(stream, &pos))    return  -1LL;  else   return ((off64_t) pos);}#ifdef __cplusplus}#endif


wzplayer 相关链接:

delphi:支持:http://blog.csdn.net/weinyzhou/article/details/8105126

ios:http://blog.csdn.net/weinyzhou/article/details/8091688

android:http://blog.csdn.net/weinyzhou/article/details/7723673


ffmpeg移植相关

android mk auto build:http://blog.csdn.net/weinyzhou/article/details/7559205

ffmpeg vc移植项目,支持ffmpeg 代码VC调试:http://blog.csdn.net/weinyzhou/article/details/7559205

以上项目,都是付费,需要的用户可以联系.



版权所有,禁止用于商业用途及转载.
发布自:http://blog.csdn.net/weinyzhou/article/details/8120015

原创粉丝点击