diff --git a/libavfilter/vf_gradfun.c b/libavfilter/vf_gradfun.c
index ec7a78654958a912475775c13ae5aba1c76ebb51..3f8b22145746f665addb5b6d284d792555543f2d 100644
--- a/libavfilter/vf_gradfun.c
+++ b/libavfilter/vf_gradfun.c
@@ -135,7 +135,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
     gf->blur_line = ff_gradfun_blur_line_c;
     gf->filter_line = ff_gradfun_filter_line_c;
 
-    if (HAVE_MMX)
+    if (ARCH_X86)
         ff_gradfun_init_x86(gf);
 
     av_log(ctx, AV_LOG_VERBOSE, "threshold:%.2f radius:%d\n", thresh, gf->radius);
diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c
index 2783086bca441c666dffb6f53fa91bb92ffcb37d..cbbe7614b94efe6a123f7606a3ca5fdfdae6ee9f 100644
--- a/libavfilter/vf_yadif.c
+++ b/libavfilter/vf_yadif.c
@@ -412,7 +412,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
 
     yadif->filter_line = filter_line_c;
 
-    if (HAVE_MMX)
+    if (ARCH_X86)
         ff_yadif_init_x86(yadif);
 
     av_log(ctx, AV_LOG_VERBOSE, "mode:%d parity:%d auto_enable:%d\n",
diff --git a/libavfilter/x86/Makefile b/libavfilter/x86/Makefile
index 46fc84f3ecaf60cec7792f6d425a7c55e64ffef8..4289f924da652ec3c47670f7cb51be91589bed61 100644
--- a/libavfilter/x86/Makefile
+++ b/libavfilter/x86/Makefile
@@ -1,3 +1,4 @@
-MMX-OBJS-$(CONFIG_YADIF_FILTER)              += x86/yadif.o
-MMX-OBJS-$(CONFIG_GRADFUN_FILTER)            += x86/gradfun.o
+OBJS-$(CONFIG_GRADFUN_FILTER)                += x86/gradfun.o
+OBJS-$(CONFIG_YADIF_FILTER)                  += x86/yadif.o
+
 YASM-OBJS-$(CONFIG_HQDN3D_FILTER)            += x86/hqdn3d.o
diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c
index 16ef2749f14228c0d00f68df6f203761c97067c9..da571a8ee8e27b8bc953560d9cbe3925ad964894 100644
--- a/libavformat/rtspdec.c
+++ b/libavformat/rtspdec.c
@@ -621,6 +621,10 @@ static int rtsp_listen(AVFormatContext *s)
     /* ff_url_join. No authorization by now (NULL) */
     ff_url_join(rt->control_uri, sizeof(rt->control_uri), "rtsp", NULL, host,
                 port, "%s", path);
+
+    if (port < 0)
+        port = RTSP_DEFAULT_PORT;
+
     /* Create TCP connection */
     ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port,
                 "?listen&listen_timeout=%d", rt->initial_timeout * 1000);
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 4997bf2158c078eb412d45fffdf872fa28e88aed..ef7a16ae062e44f2cca1e0cd823f499b270408cc 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -173,6 +173,14 @@ enum AVPixelFormat {
     AV_PIX_FMT_GBRP16BE,  ///< planar GBR 4:4:4 48bpp, big endian
     AV_PIX_FMT_GBRP16LE,  ///< planar GBR 4:4:4 48bpp, little endian
 
+    /**
+     * duplicated pixel formats for compatibility with libav.
+     * FFmpeg supports these formats since May 8 2012 and Jan 28 2012 (commits f9ca1ac7 and 143a5c55)
+     * Libav added them Oct 12 2012 with incompatible values (commit 6d5600e85)
+     */
+    AV_PIX_FMT_YUVA422P_LIBAV,  ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
+    AV_PIX_FMT_YUVA444P_LIBAV,  ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
+
 #ifndef AV_PIX_FMT_ABI_GIT_MASTER
     AV_PIX_FMT_RGBA64BE=0x123,  ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
     AV_PIX_FMT_RGBA64LE,  ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
@@ -210,6 +218,12 @@ enum AVPixelFormat {
 #endif
 };
 
+#if AV_HAVE_INCOMPATIBLE_FORK_ABI
+#define AV_PIX_FMT_YUVA422P AV_PIX_FMT_YUVA422P_LIBAV
+#define AV_PIX_FMT_YUVA444P AV_PIX_FMT_YUVA444P_LIBAV
+#endif
+
+
 #define AV_PIX_FMT_Y400A AV_PIX_FMT_GRAY8A
 #define AV_PIX_FMT_GBR24P AV_PIX_FMT_GBRP