$OpenBSD: patch-plugins_video_H_263-1998_h263-1998_cxx,v 1.4 2013/11/02 15:55:53 ajacoutot Exp $

Fix compilation/runtime with ffmpeg 0.11 (Arch Linux):
https://projects.archlinux.org/svntogit/packages.git/tree/trunk/opal-ffmpeg.patch?h=packages/opal

--- plugins/video/H.263-1998/h263-1998.cxx.orig	Thu Aug 15 01:22:47 2013
+++ plugins/video/H.263-1998/h263-1998.cxx	Sat Nov  2 16:28:49 2013
@@ -48,6 +48,10 @@
 #endif
 
 #include "h263-1998.h"
+extern "C"
+{
+#include <libavutil/opt.h>
+}
 #include <limits>
 #include <iomanip>
 #include <stdio.h>
@@ -203,7 +207,7 @@ H263_Base_EncoderContext::~H263_Base_EncoderContext()
   PTRACE(4, m_prefix, "Encoder closed");
 }
 
-bool H263_Base_EncoderContext::Init(CodecID codecId)
+bool H263_Base_EncoderContext::Init(AVCodecID codecId)
 {
   PTRACE(5, m_prefix, "Opening encoder");
 
@@ -317,9 +321,9 @@ void H263_Base_EncoderContext::SetOption(const char * 
     // Level 2+ 
     // works with eyeBeam, signaled via  non-standard "D"
     if (atoi(value) == 1)
-      m_context->flags |= CODEC_FLAG_H263P_UMV; 
+      av_opt_set_int(m_context->priv_data, "umv", 1, 0);
     else
-      m_context->flags &= ~CODEC_FLAG_H263P_UMV; 
+      av_opt_set_int(m_context->priv_data, "umv", 0, 0);
     return;
   }
 
@@ -328,9 +332,9 @@ void H263_Base_EncoderContext::SetOption(const char * 
     // Annex F: Advanced Prediction Mode
     // does not work with eyeBeam
     if (atoi(value) == 1)
-      m_context->flags |= CODEC_FLAG_OBMC; 
+      av_opt_set_int(m_context->priv_data, "obmc", 1, 0);
     else
-      m_context->flags &= ~CODEC_FLAG_OBMC; 
+      av_opt_set_int(m_context->priv_data, "obmc", 0, 0);
     return;
   }
 #endif
@@ -360,9 +364,9 @@ void H263_Base_EncoderContext::SetOption(const char * 
     // Annex K: Slice Structure
     // does not work with eyeBeam
     if (atoi(value) != 0)
-      m_context->flags |= CODEC_FLAG_H263P_SLICE_STRUCT; 
+      av_opt_set_int(m_context->priv_data, "structured_slices", 1, 0);
     else
-      m_context->flags &= ~CODEC_FLAG_H263P_SLICE_STRUCT; 
+      av_opt_set_int(m_context->priv_data, "structured_slices", 0, 0);
     return;
   }
 
@@ -370,9 +374,9 @@ void H263_Base_EncoderContext::SetOption(const char * 
     // Annex S: Alternative INTER VLC mode
     // does not work with eyeBeam
     if (atoi(value) == 1)
-      m_context->flags |= CODEC_FLAG_H263P_AIV; 
+      av_opt_set_int(m_context->priv_data, "aiv", 1, 0);
     else
-      m_context->flags &= ~CODEC_FLAG_H263P_AIV; 
+      av_opt_set_int(m_context->priv_data, "aiv", 0, 0);
     return;
   }
 
@@ -450,15 +454,6 @@ bool H263_Base_EncoderContext::OpenCodec()
   PTRACE(5, m_prefix, "qmax set to " << m_context->qmax);
   PTRACE(5, m_prefix, "payload size set to " << m_context->rtp_payload_size);
 
-  #define CODEC_TRACER_FLAG(tracer, flag) \
-    PTRACE(4, m_prefix, #flag " is " << ((m_context->flags & flag) ? "enabled" : "disabled"));
-  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_H263P_UMV);
-  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_OBMC);
-  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_AC_PRED);
-  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_H263P_SLICE_STRUCT)
-  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_LOOP_FILTER);
-  CODEC_TRACER_FLAG(tracer, CODEC_FLAG_H263P_AIV);
-
   return FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec) == 0;
 }
 
@@ -521,7 +516,7 @@ bool H263_Base_EncoderContext::EncodeFrames(const BYTE
 
     // Need to copy to local buffer to guarantee 16 byte alignment
     memcpy(m_inputFrame->data[0], OPAL_VIDEO_FRAME_DATA_PTR(header), header->width*header->height*3/2);
-    m_inputFrame->pict_type = (flags & PluginCodec_CoderForceIFrame) ? FF_I_TYPE : AV_PICTURE_TYPE_NONE;
+    m_inputFrame->pict_type = (flags & PluginCodec_CoderForceIFrame) ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_NONE;
 
     /*
     m_inputFrame->pts = (int64_t)srcRTP.GetTimestamp()*m_context->time_base.den/m_context->time_base.num/VIDEO_CLOCKRATE;
@@ -603,13 +598,13 @@ bool H263_RFC2190_EncoderContext::Init()
   m_context->rtp_callback = &H263_RFC2190_EncoderContext::RTPCallBack;
   m_context->opaque = this; // used to separate out packets from different encode threads
 
-  m_context->flags &= ~CODEC_FLAG_H263P_UMV;
+  av_opt_set_int(m_context->priv_data, "umv", 0, 0);
   m_context->flags &= ~CODEC_FLAG_4MV;
 #if LIBAVCODEC_RTP_MODE
   m_context->flags &= ~CODEC_FLAG_H263P_AIC;
 #endif
-  m_context->flags &= ~CODEC_FLAG_H263P_AIV;
-  m_context->flags &= ~CODEC_FLAG_H263P_SLICE_STRUCT;
+  av_opt_set_int(m_context->priv_data, "aiv", 0, 0);
+  av_opt_set_int(m_context->priv_data, "structured_slices", 0, 0);
 
   return true;
 }
