diff -urN osdpip-0.1.2.old/decoder.c osdpip-0.1.2/decoder.c
--- decoder.c.orig	2013-06-17 21:01:31.795476861 +0200
+++ decoder.c	2013-06-17 21:01:57.153475959 +0200
@@ -34,8 +34,8 @@
         printf("codec not found\n");
         return -1;
     }
-    m_Context = avcodec_alloc_context();
-    if (avcodec_open(m_Context, m_Codec) < 0)
+    m_Context = avcodec_alloc_context3(m_Codec);
+    if (avcodec_open2(m_Context, m_Codec, NULL) < 0)
     {
         printf("could not open codec\n");
         return -1;
@@ -106,17 +106,17 @@
         return -1;
     }
 
-    av_set_int(context, "srcw", m_Context->width - (OsdPipSetup.CropLeft + OsdPipSetup.CropRight));
-    av_set_int(context, "srch", m_Context->height - (OsdPipSetup.CropTop + OsdPipSetup.CropBottom));
-    av_set_int(context, "src_format", PIX_FMT_YUV420P);
-    av_set_int(context, "dstw", m_Width);
-    av_set_int(context, "dsth", m_Height);
+    av_opt_set_int(context, "srcw", m_Context->width - (OsdPipSetup.CropLeft + OsdPipSetup.CropRight), 0);
+    av_opt_set_int(context, "srch", m_Context->height - (OsdPipSetup.CropTop + OsdPipSetup.CropBottom), 0);
+    av_opt_set_int(context, "src_format", PIX_FMT_YUV420P, 0);
+    av_opt_set_int(context, "dstw", m_Width, 0);
+    av_opt_set_int(context, "dsth", m_Height, 0);
 #ifdef USE_NEW_FFMPEG_HEADERS
-    av_set_int(context, "dst_format", ConvertToRGB ? PIX_FMT_RGB32 : PIX_FMT_YUV420P);
+    av_opt_set_int(context, "dst_format", ConvertToRGB ? PIX_FMT_RGB32 : PIX_FMT_YUV420P, 0);
 #else
-    av_set_int(context, "dst_format", ConvertToRGB ? PIX_FMT_RGBA32 : PIX_FMT_YUV420P);
+    av_opt_set_int(context, "dst_format", ConvertToRGB ? PIX_FMT_RGBA32 : PIX_FMT_YUV420P, 0);
 #endif
-    av_set_int(context, "sws_flags", SWS_LANCZOS);
+    av_opt_set_int(context, "sws_flags", SWS_LANCZOS, 0);
 
     if (sws_init_context(context, NULL, NULL) < 0) {
         printf("Error initializing conversion context.\n");
