diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h
index 0a2935bbff49f8745f6dd085d3dc541a3e308798..402b99091a9696c3d2d52373ff59c7331e6a6c16 100644
--- a/libavcodec/dsputil.h
+++ b/libavcodec/dsputil.h
@@ -492,4 +492,10 @@ static inline long int lrintf(float x)
 }
 #endif
 
+#if defined(CONFIG_OS2) || defined(CONFIG_SUNOS)
+static inline float floorf(float f) { 
+    return floor(f); 
+}
+#endif
+
 #endif
diff --git a/libavcodec/opts.c b/libavcodec/opts.c
index 44a213397f5150a6b5a77af6214cfd46e86f8368..2ce459d758c681bfd6e96c3e70ddc99d35ce8cc7 100644
--- a/libavcodec/opts.c
+++ b/libavcodec/opts.c
@@ -11,7 +11,6 @@
  */
 
 #include "avcodec.h"
-#include "os_support.h"
 
 const AVOption avoptions_common[] = {
     AVOPTION_CODEC_FLAG("bit_exact", "use only bit-exact stuff", flags, CODEC_FLAG_BITEXACT, 0),
@@ -40,15 +39,32 @@ const AVOption avoptions_workaround_bug[] = {
     AVOPTION_END()
 };
 
+/* avoid compatibility problems by redefining it */
+static int av_strcasecmp(const char *s1, const char *s2)
+{
+    signed char val;
+    
+    for(;;) {
+        val = toupper(*s1) - toupper(*s2);
+        if (val != 0)
+            break;
+        if (*s1 != '\0')
+            break;
+        s1++;
+        s2++;
+    }
+    return val;
+}
+
 
 static int parse_bool(const AVOption *c, char *s, int *var)
 {
     int b = 1; /* by default -on- when present */
     if (s) {
-	if (!strcasecmp(s, "off") || !strcasecmp(s, "false")
+	if (!av_strcasecmp(s, "off") || !av_strcasecmp(s, "false")
 	    || !strcmp(s, "0"))
 	    b = 0;
-	else if (!strcasecmp(s, "on") || !strcasecmp(s, "true")
+	else if (!av_strcasecmp(s, "on") || !av_strcasecmp(s, "true")
 		 || !strcmp(s, "1"))
 	    b = 1;
 	else
diff --git a/libavcodec/resample.c b/libavcodec/resample.c
index c4ae085f936afa4ff92319a5643493151af44a2c..2a8d6a0234cd623e0fe1afe7784f700aaa0e16fa 100644
--- a/libavcodec/resample.c
+++ b/libavcodec/resample.c
@@ -23,7 +23,6 @@
  */
 
 #include "avcodec.h"
-#include "os_support.h"
 
 typedef struct {
     /* fractional resampling */