diff --git a/Makefile b/Makefile index f1570cddc3add2fa4345b208a3a7888be93101bb..02e1a136d0c09c5908dd3211b56e9b3d1591bfde 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ PROGS-$(CONFIG_FFSERVER) += ffserver PROGS := $(PROGS-yes:%=%$(PROGSSUF)$(EXESUF)) INSTPROGS = $(PROGS-yes:%=%$(PROGSSUF)$(EXESUF)) -OBJS = cmdutils.o +OBJS = cmdutils.o $(EXEOBJS) OBJS-ffmpeg = ffmpeg_opt.o ffmpeg_filter.o TESTTOOLS = audiogen videogen rotozoom tiny_psnr base64 HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options @@ -56,8 +56,8 @@ $(PROGS): %$(EXESUF): %_g$(EXESUF) $(CP) $< $@ $(STRIP) $@ -$(TOOLS): %$(EXESUF): %.o - $(LD) $(LDFLAGS) $(LD_O) $< $(ELIBS) +$(TOOLS): %$(EXESUF): %.o $(EXEOBJS) + $(LD) $(LDFLAGS) $(LD_O) $^ $(ELIBS) tools/cws2fws$(EXESUF): ELIBS = $(ZLIB) @@ -91,7 +91,7 @@ endef $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) define DOPROG -OBJS-$(1) += $(1).o cmdutils.o +OBJS-$(1) += $(1).o cmdutils.o $(EXEOBJS) $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1)) $$(OBJS-$(1)): CFLAGS += $(CFLAGS-$(1)) $(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1)) diff --git a/cmdutils.c b/cmdutils.c index 39cc2dbea25fdf721f70930f48c440f55fe6f456..af24c4fcd5381f5df74d37de93dc44d8118a5952 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -54,6 +54,7 @@ #include "libavformat/network.h" #endif #if HAVE_SYS_RESOURCE_H +#include <sys/time.h> #include <sys/resource.h> #endif diff --git a/configure b/configure index cf05d2f4d9d8df309b400a90b2d3edcf2d44cc66..00aafc240ddc2b8fae3d2df35dd070ea3f3f7ebc 100755 --- a/configure +++ b/configure @@ -1264,20 +1264,28 @@ HAVE_LIST_PUB=' ' MATH_FUNCS=" + atanf + atan2f cbrtf + cosf exp2 exp2f + expf isinf isnan + ldexpf llrint llrintf log2 log2f + log10f lrint lrintf + powf rint round roundf + sinf trunc truncf " @@ -1331,6 +1339,7 @@ HAVE_LIST=" GetProcessTimes GetSystemTimeAsFileTime getrusage + getservbyport gettimeofday glob gnu_as @@ -3484,6 +3493,7 @@ if enabled network; then check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len check_type netinet/sctp.h "struct sctp_event_subscribe" check_func getaddrinfo $network_extralibs + check_func getservbyport $network_extralibs # Prefer arpa/inet.h over winsock2 if check_header arpa/inet.h ; then check_func closesocket @@ -4206,6 +4216,7 @@ ZLIB=$($ldflags_filter -lz) LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD EXTRALIBS=$extralibs COMPAT_OBJS=$compat_objs +EXEOBJS=$exeobjs INSTALL=$install LIBTARGET=${LIBTARGET} SLIBNAME=${SLIBNAME} diff --git a/ffmpeg.c b/ffmpeg.c index a0e41bdf23c896f8f0de0b1d4157b43a67419e2c..d12e51a8650bab49725a0b1b03064a687d3c51ed 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -69,6 +69,7 @@ # include "libavfilter/buffersink.h" #if HAVE_SYS_RESOURCE_H +#include <sys/time.h> #include <sys/types.h> #include <sys/resource.h> #elif HAVE_GETPROCESSTIMES diff --git a/libavcodec/aacps_tablegen.h b/libavcodec/aacps_tablegen.h index a8c4021756b7459d74b6eea02a2ea6dc932bd62a..1f9c326d490c6855abb17fab75949bc79d2f05e8 100644 --- a/libavcodec/aacps_tablegen.h +++ b/libavcodec/aacps_tablegen.h @@ -31,6 +31,7 @@ #include "libavcodec/aacps_tables.h" #else #include "libavutil/common.h" +#include "libavutil/libm.h" #include "libavutil/mathematics.h" #include "libavutil/mem.h" #define NR_ALLPASS_BANDS20 30 diff --git a/libavformat/network.h b/libavformat/network.h index a766d03fcd0de931afbcf81ea6e9f3b48ce59ec8..f8b4dee50e7ef7002eb4733ebd5ce1c252ee53b5 100644 --- a/libavformat/network.h +++ b/libavformat/network.h @@ -201,6 +201,14 @@ const char *ff_gai_strerror(int ecode); #define gai_strerror ff_gai_strerror #endif +#ifndef INADDR_LOOPBACK +#define INADDR_LOOPBACK 0x7f000001 +#endif + +#ifndef INET_ADDRSTRLEN +#define INET_ADDRSTRLEN 16 +#endif + #ifndef INET6_ADDRSTRLEN #define INET6_ADDRSTRLEN INET_ADDRSTRLEN #endif diff --git a/libavformat/os_support.c b/libavformat/os_support.c index bf6b8f29caa5f4c6ea4e36280e9bfea479369fd3..ad1a23d0ed7062b2ac9d1f6c7af6e22c7b7001ad 100644 --- a/libavformat/os_support.c +++ b/libavformat/os_support.c @@ -236,8 +236,10 @@ int ff_getnameinfo(const struct sockaddr *sa, int salen, if (serv && servlen > 0) { struct servent *ent = NULL; +#if HAVE_GETSERVBYPORT if (!(flags & NI_NUMERICSERV)) ent = getservbyport(sin->sin_port, flags & NI_DGRAM ? "udp" : "tcp"); +#endif if (ent) snprintf(serv, servlen, "%s", ent->s_name); diff --git a/libavutil/libm.h b/libavutil/libm.h index d36420bc9be0b11c1e2ed49b546f398872775ded..bfcc21c5daf46d9b317a9ad889504239de8a9a8e 100644 --- a/libavutil/libm.h +++ b/libavutil/libm.h @@ -33,6 +33,21 @@ #include "libavutil/mips/libm_mips.h" #endif /* HAVE_MIPSFPU && HAVE_INLINE_ASM*/ +#if !HAVE_ATANF +#undef atanf +#define atanf(x) ((float)atan(x)) +#endif + +#if !HAVE_ATAN2F +#undef atan2f +#define atan2f(y, x) ((float)atan2(y, x)) +#endif + +#if !HAVE_POWF +#undef powf +#define powf(x, y) ((float)pow(x, y)) +#endif + #if !HAVE_CBRTF static av_always_inline float cbrtf(float x) { @@ -40,6 +55,16 @@ static av_always_inline float cbrtf(float x) } #endif +#if !HAVE_COSF +#undef cosf +#define cosf(x) ((float)cos(x)) +#endif + +#if !HAVE_EXPF +#undef expf +#define expf(x) ((float)exp(x)) +#endif + #if !HAVE_EXP2 #undef exp2 #define exp2(x) exp((x) * 0.693147180559945) @@ -70,6 +95,11 @@ static av_always_inline av_const int isnan(float x) } #endif /* HAVE_ISNAN */ +#if !HAVE_LDEXPF +#undef ldexpf +#define ldexpf(x, exp) ((float)ldexp(x, exp)) +#endif + #if !HAVE_LLRINT #undef llrint #define llrint(x) ((long long)rint(x)) @@ -90,6 +120,16 @@ static av_always_inline av_const int isnan(float x) #define log2f(x) ((float)log2(x)) #endif /* HAVE_LOG2F */ +#if !HAVE_LOG10F +#undef log10f +#define log10f(x) ((float)log10(x)) +#endif + +#if !HAVE_SINF +#undef sinf +#define sinf(x) ((float)sin(x)) +#endif + #if !HAVE_RINT static inline double rint(double x) { diff --git a/library.mak b/library.mak index 2728340d0cb0c2451c7480561c6aec9b3d3f668f..c472404da5b3faec52c43b874242e3808c9117a4 100644 --- a/library.mak +++ b/library.mak @@ -36,7 +36,7 @@ define RULES $(EXAMPLES) $(TOOLS): THISLIB = $(FULLNAME:%=$(LD_LIB)) $(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME) -$(EXAMPLES) $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o +$(EXAMPLES) $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o $(EXEOBJS) $$(LD) $(LDFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(ELIBS) $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index e27eaa1309d0cd12a84b09779833a94a0d186776..0fe974f0544dc0802cea6159f2c2a87beaa21c07 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -451,6 +451,11 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], uint8_t *dst[], int dstStride[]) { int alpha_first = 0; + const uint8_t *src102[] = { src[1], src[0], src[2] }; + const uint8_t *src201[] = { src[2], src[0], src[1] }; + int stride102[] = { srcStride[1], srcStride[0], srcStride[2] }; + int stride201[] = { srcStride[2], srcStride[0], srcStride[1] }; + if (c->srcFormat != AV_PIX_FMT_GBRP) { av_log(c, AV_LOG_ERROR, "unsupported planar RGB conversion %s -> %s\n", av_get_pix_fmt_name(c->srcFormat), @@ -460,15 +465,13 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], switch (c->dstFormat) { case AV_PIX_FMT_BGR24: - gbr24ptopacked24((const uint8_t *[]) { src[1], src[0], src[2] }, - (int []) { srcStride[1], srcStride[0], srcStride[2] }, + gbr24ptopacked24(src102, stride102, dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, c->srcW); break; case AV_PIX_FMT_RGB24: - gbr24ptopacked24((const uint8_t *[]) { src[2], src[0], src[1] }, - (int []) { srcStride[2], srcStride[0], srcStride[1] }, + gbr24ptopacked24(src201, stride201, dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, c->srcW); break; @@ -476,8 +479,7 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], case AV_PIX_FMT_ARGB: alpha_first = 1; case AV_PIX_FMT_RGBA: - gbr24ptopacked32((const uint8_t *[]) { src[2], src[0], src[1] }, - (int []) { srcStride[2], srcStride[0], srcStride[1] }, + gbr24ptopacked32(src201, stride201, dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, alpha_first, c->srcW); break; @@ -485,8 +487,7 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], case AV_PIX_FMT_ABGR: alpha_first = 1; case AV_PIX_FMT_BGRA: - gbr24ptopacked32((const uint8_t *[]) { src[1], src[0], src[2] }, - (int []) { srcStride[1], srcStride[0], srcStride[2] }, + gbr24ptopacked32(src102, stride102, dst[0] + srcSliceY * dstStride[0], dstStride[0], srcSliceH, alpha_first, c->srcW); break;