]> git.pld-linux.org Git - packages/opal.git/commitdiff
- rel 4; ffmpeg fixes from freebsd auto/th/opal-3.10.11-4
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Sat, 29 Sep 2018 10:07:39 +0000 (12:07 +0200)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Sat, 29 Sep 2018 10:07:39 +0000 (12:07 +0200)
ffmpeg.patch
opal-build.patch
opal.spec

index 49a95b0d12b61f6012a197b6adeb85c7f38e8ba8..91e726be4e418283a6a778d2e505dce9df76eedb 100644 (file)
-Description: Backport changes for the libav 9 API
- Also replace loading of libavcodec and libavutil via dlopen by linking against
- it.
-Author: Sebastian Ramacher <sramacher@debian.org>
-Bug-Debian: http://bugs.debian.org/720824
-Last-Update: 2013-09-12
-
---- a/plugins/video/H.263-1998/h263-1998.cxx
-+++ b/plugins/video/H.263-1998/h263-1998.cxx
-@@ -216,7 +216,7 @@
-     return false;
-   }
--  m_context = FFMPEGLibraryInstance.AvcodecAllocContext();
-+  m_context = FFMPEGLibraryInstance.AvcodecAllocContext(m_codec);
-   if (m_context == NULL) {
-     PTRACE(1, m_prefix, "Failed to allocate context for encoder");
-     return false;
-@@ -312,6 +312,7 @@
-     return;
-   }
-+#ifdef CODEC_FLAG_H263P_UMV
-   if (STRCMPI(option, H263_ANNEX_D) == 0) {
-     // Annex D: Unrestructed Motion Vectors
-     // Level 2+ 
-@@ -322,6 +323,7 @@
-       m_context->flags &= ~CODEC_FLAG_H263P_UMV; 
-     return;
-   }
-+#endif
- #if 0 // DO NOT ENABLE THIS FLAG. FFMPEG IS NOT THREAD_SAFE WHEN THIS FLAG IS SET
-   if (STRCMPI(option, H263_ANNEX_F) == 0) {
-@@ -356,6 +358,7 @@
-     return;
-   }
-+#ifdef CODEC_FLAG_H263P_SLICE_STRUCT
-   if (STRCMPI(option, H263_ANNEX_K) == 0) {
-     // Annex K: Slice Structure
-     // does not work with eyeBeam
-@@ -365,7 +368,9 @@
-       m_context->flags &= ~CODEC_FLAG_H263P_SLICE_STRUCT; 
-     return;
-   }
-+#endif
-+#ifdef CODEC_FLAG_H263P_AIV
-   if (STRCMPI(option, H263_ANNEX_S) == 0) {
-     // Annex S: Alternative INTER VLC mode
-     // does not work with eyeBeam
-@@ -375,6 +380,7 @@
-       m_context->flags &= ~CODEC_FLAG_H263P_AIV; 
-     return;
-   }
-+#endif
-   if (STRCMPI(option, PLUGINCODEC_MEDIA_PACKETIZATION) == 0 ||
-       STRCMPI(option, PLUGINCODEC_MEDIA_PACKETIZATIONS) == 0) {
-@@ -450,15 +456,6 @@
-   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 +518,7 @@
-     // 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 +600,19 @@
-   m_context->rtp_callback = &H263_RFC2190_EncoderContext::RTPCallBack;
-   m_context->opaque = this; // used to separate out packets from different encode threads
-+#ifdef CODEC_FLAG_H263P_UMV
-   m_context->flags &= ~CODEC_FLAG_H263P_UMV;
-+#endif
-   m_context->flags &= ~CODEC_FLAG_4MV;
- #if LIBAVCODEC_RTP_MODE
-   m_context->flags &= ~CODEC_FLAG_H263P_AIC;
- #endif
-+#ifdef CODEC_FLAG_H263P_AIV
-   m_context->flags &= ~CODEC_FLAG_H263P_AIV;
-+#endif
-+#ifdef CODEC_FLAG_H263P_SLICE_STRUCT
-   m_context->flags &= ~CODEC_FLAG_H263P_SLICE_STRUCT;
-+#endif
-   return true;
- }
-@@ -658,7 +661,7 @@
-     return;
-   }
--  m_context = FFMPEGLibraryInstance.AvcodecAllocContext();
-+  m_context = FFMPEGLibraryInstance.AvcodecAllocContext(m_codec);
-   if (m_context == NULL) {
-     PTRACE(1, m_prefix, "Failed to allocate context for decoder");
-     return;
---- a/plugins/video/H.264/h264-x264.cxx
-+++ b/plugins/video/H.264/h264-x264.cxx
-@@ -48,6 +48,7 @@
- #include "shared/h264frame.h"
- #include "shared/x264wrap.h"
-+#include <cstdio>
- #define MY_CODEC      x264                                  // Name of codec (use C variable characters)
- #define MY_CODEC_LOG "x264"
-@@ -1067,18 +1068,17 @@
-       if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H264)) == NULL)
-         return false;
--      if ((m_context = FFMPEGLibraryInstance.AvcodecAllocContext()) == NULL)
-+      if ((m_context = FFMPEGLibraryInstance.AvcodecAllocContext(m_codec)) == NULL)
-         return false;
-       m_context->workaround_bugs = FF_BUG_AUTODETECT;
--      m_context->error_recognition = FF_ER_AGGRESSIVE;
-       m_context->idct_algo = FF_IDCT_H264;
-       m_context->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK;
-       m_context->flags = CODEC_FLAG_INPUT_PRESERVED | CODEC_FLAG_EMU_EDGE;
--      m_context->flags2 = CODEC_FLAG2_BRDO |
--                          CODEC_FLAG2_MEMC_ONLY |
-+      m_context->flags2 = CODEC_FLAG2_SKIP_RD |
-+#ifdef CODEC_FLAG2_DROP_FRAME_TIMECODE
-                           CODEC_FLAG2_DROP_FRAME_TIMECODE |
--                          CODEC_FLAG2_SKIP_RD |
-+#endif
-                           CODEC_FLAG2_CHUNKS;
-       if ((m_picture = FFMPEGLibraryInstance.AvcodecAllocFrame()) == NULL)
---- a/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
-+++ b/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
-@@ -589,17 +589,14 @@
-     m_avpicture->quality = m_videoQMin;
- #ifdef USE_ORIG
--    m_avcontext->flags |= CODEC_FLAG_PART;   // data partitioning
-     m_avcontext->flags |= CODEC_FLAG_4MV;    // 4 motion vectors
- #else
-     m_avcontext->max_b_frames=0; /*don't use b frames*/
-     m_avcontext->flags|=CODEC_FLAG_AC_PRED;
--    m_avcontext->flags|=CODEC_FLAG_H263P_UMV;
-     /*c->flags|=CODEC_FLAG_QPEL;*/ /*don't enable this one: this forces profile_level to advanced simple profile */
-     m_avcontext->flags|=CODEC_FLAG_4MV;
-     m_avcontext->flags|=CODEC_FLAG_GMC;
-     m_avcontext->flags|=CODEC_FLAG_LOOP_FILTER;
--    m_avcontext->flags|=CODEC_FLAG_H263P_SLICE_STRUCT;
- #endif
-     m_avcontext->opaque = this;              // for use in RTP callback
- }
-@@ -691,7 +688,12 @@
- bool MPEG4EncoderContext::OpenCodec()
- {
--  m_avcontext = FFMPEGLibraryInstance.AvcodecAllocContext();
-+  if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(CODEC_ID_MPEG4)) == NULL){
-+    PTRACE(1, "MPEG4", "Encoder not found");
-+    return false;
-+  }
-+
-+  m_avcontext = FFMPEGLibraryInstance.AvcodecAllocContext(m_avcodec);
-   if (m_avcontext == NULL) {
-     PTRACE(1, "MPEG4", "Encoder failed to allocate context for encoder");
-     return false;
-@@ -703,11 +705,6 @@
-     return false;
-   }
--  if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(CODEC_ID_MPEG4)) == NULL){
--    PTRACE(1, "MPEG4", "Encoder not found");
--    return false;
--  }
--
- #if PLUGINCODEC_TRACING
-   // debugging flags
-   if (PTRACE_CHECK(4)) {
-@@ -804,7 +801,7 @@
-         // Should the next frame be an I-Frame?
-         if ((flags & PluginCodec_CoderForceIFrame) || (m_frameNum == 0))
-         {
--            m_avpicture->pict_type = FF_I_TYPE;
-+            m_avpicture->pict_type = AV_PICTURE_TYPE_I;
-         }
-         else // No IFrame requested, let avcodec decide what to do
-         {
-@@ -1325,7 +1322,6 @@
- void MPEG4DecoderContext::SetStaticDecodingParams() {
-     m_avcontext->flags |= CODEC_FLAG_4MV; 
--    m_avcontext->flags |= CODEC_FLAG_PART;
-     m_avcontext->workaround_bugs = 0; // no workaround for buggy implementations
- }
-@@ -1399,7 +1395,7 @@
-         return false;
-     }
-         
--    m_avcontext = FFMPEGLibraryInstance.AvcodecAllocContext();
-+    m_avcontext = FFMPEGLibraryInstance.AvcodecAllocContext(m_avcodec);
-     if (m_avcontext == NULL) {
-         PTRACE(1, "MPEG4", "Decoder failed to allocate context");
-         return false;
---- a/plugins/video/common/dyna.cxx
-+++ b/plugins/video/common/dyna.cxx
-@@ -38,6 +38,13 @@
-  *                 Matthias Schneider (ma30002000@yahoo.de)
-  */
- #include "dyna.h"
-+#include <cstdio>
-+#include <cstdarg>
-+
-+extern "C" {
-+#include <libavcodec/avcodec.h>
-+#include <libavutil/mem.h>
-+}
- bool DynaLink::Open(const char *name)
- {
-@@ -228,101 +235,15 @@
-   m_libAvutil.Close();
- }
--#define CHECK_AVUTIL(name, func) \
--      (seperateLibAvutil ? \
--        m_libAvutil.GetFunction(name,  (DynaLink::Function &)func) : \
--        m_libAvcodec.GetFunction(name, (DynaLink::Function &)func) \
--       ) \
--
--
- bool FFMPEGLibrary::Load()
- {
-   WaitAndSignal m(processLock);
-   if (IsLoaded())
-     return true;
--  bool seperateLibAvutil = false;
--
--#ifdef LIBAVCODEC_LIB_NAME
--  if (m_libAvcodec.Open(LIBAVCODEC_LIB_NAME))
--    seperateLibAvutil = true;
--  else
--#endif
--  if (m_libAvcodec.Open("libavcodec"))
--    seperateLibAvutil = false;
--  else if (m_libAvcodec.Open("avcodec-" AV_STRINGIFY(LIBAVCODEC_VERSION_MAJOR)))
--    seperateLibAvutil = true;
--  else {
--    PTRACE(1, m_codecString, "Failed to load FFMPEG libavcodec library");
--    return false;
--  }
--
--  if (seperateLibAvutil &&
--        !(
--#ifdef LIBAVUTIL_LIB_NAME
--          m_libAvutil.Open(LIBAVUTIL_LIB_NAME) ||
--#endif
--          m_libAvutil.Open("libavutil") ||
--          m_libAvutil.Open("avutil-" AV_STRINGIFY(LIBAVUTIL_VERSION_MAJOR))
--        ) ) {
--    PTRACE(1, m_codecString, "Failed to load FFMPEG libavutil library");
--    return false;
--  }
--
--  strcpy(m_libAvcodec.m_codecString, m_codecString);
--  strcpy(m_libAvutil.m_codecString,  m_codecString);
--
--  if (!m_libAvcodec.GetFunction("avcodec_init", (DynaLink::Function &)Favcodec_init))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("av_init_packet", (DynaLink::Function &)Fav_init_packet))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_register_all", (DynaLink::Function &)Favcodec_register_all))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_find_encoder", (DynaLink::Function &)Favcodec_find_encoder))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_find_decoder", (DynaLink::Function &)Favcodec_find_decoder))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_alloc_context", (DynaLink::Function &)Favcodec_alloc_context))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_alloc_frame", (DynaLink::Function &)Favcodec_alloc_frame))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_open", (DynaLink::Function &)Favcodec_open))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_close", (DynaLink::Function &)Favcodec_close))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_encode_video", (DynaLink::Function &)Favcodec_encode_video))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_decode_video2", (DynaLink::Function &)Favcodec_decode_video))
--    return false;
--
--  if (!m_libAvcodec.GetFunction("avcodec_set_dimensions", (DynaLink::Function &)Favcodec_set_dimensions))
--    return false;
--
--  if (!CHECK_AVUTIL("av_free", Favcodec_free))
--    return false;
--
--  if(!m_libAvcodec.GetFunction("avcodec_version", (DynaLink::Function &)Favcodec_version))
--    return false;
--
--  if (!CHECK_AVUTIL("av_log_set_level", FAv_log_set_level))
--    return false;
--
--  if (!CHECK_AVUTIL("av_log_set_callback", FAv_log_set_callback))
--    return false;
--
-   // must be called before using avcodec lib
--  unsigned libVer = Favcodec_version();
-+  unsigned libVer = avcodec_version();
-   if (libVer != LIBAVCODEC_VERSION_INT) {
-     PTRACE(2, m_codecString, "Warning: compiled against libavcodec headers from version "
-            << LIBAVCODEC_VERSION_MAJOR << '.' << LIBAVCODEC_VERSION_MINOR << '.' << LIBAVCODEC_VERSION_MICRO
-@@ -334,8 +255,7 @@
-            << (libVer >> 16) << ((libVer>>8) & 0xff) << (libVer & 0xff));
-   }
--  Favcodec_init();
--  Favcodec_register_all ();
-+  avcodec_register_all();
- #if PLUGINCODEC_TRACING
-   AvLogSetLevel(AV_LOG_DEBUG);
-@@ -350,49 +270,49 @@
- AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum CodecID id)
- {
--  return Favcodec_find_encoder(id);
-+  return avcodec_find_encoder(id);
- }
- AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum CodecID id)
- {
-   WaitAndSignal m(processLock);
--  return Favcodec_find_decoder(id);
-+  return avcodec_find_decoder(id);
- }
--AVCodecContext *FFMPEGLibrary::AvcodecAllocContext(void)
-+AVCodecContext *FFMPEGLibrary::AvcodecAllocContext(AVCodec *codec)
- {
-   WaitAndSignal m(processLock);
--  return Favcodec_alloc_context();
-+  return avcodec_alloc_context3(codec);
- }
- AVFrame *FFMPEGLibrary::AvcodecAllocFrame(void)
- {
-   WaitAndSignal m(processLock);
--  return Favcodec_alloc_frame();
-+  return avcodec_alloc_frame();
- }
- int FFMPEGLibrary::AvcodecOpen(AVCodecContext *ctx, AVCodec *codec)
- {
-   WaitAndSignal m(processLock);
--  return Favcodec_open(ctx, codec);
-+  return avcodec_open2(ctx, codec, NULL);
- }
- int FFMPEGLibrary::AvcodecClose(AVCodecContext *ctx)
- {
-   WaitAndSignal m(processLock);
--  return Favcodec_close(ctx);
-+  return avcodec_close(ctx);
- }
- int FFMPEGLibrary::AvcodecEncodeVideo(AVCodecContext *ctx, BYTE *buf, int buf_size, const AVFrame *pict)
- {
-   int res;
--  res = Favcodec_encode_video(ctx, buf, buf_size, pict);
-+  res = avcodec_encode_video(ctx, buf, buf_size, pict);
-   PTRACE(6, m_codecString, "DYNA\tEncoded into " << res << " bytes, max " << buf_size);
-   return res;
-@@ -401,35 +321,35 @@
- int FFMPEGLibrary::AvcodecDecodeVideo(AVCodecContext *ctx, AVFrame *pict, int *got_picture_ptr, BYTE *buf, int buf_size)
- {
-   AVPacket avpkt;
--  Fav_init_packet(&avpkt);
-+  av_init_packet(&avpkt);
-   avpkt.data = buf;
-   avpkt.size = buf_size;
--  return Favcodec_decode_video(ctx, pict, got_picture_ptr, &avpkt);
-+  return avcodec_decode_video2(ctx, pict, got_picture_ptr, &avpkt);
- }
- void FFMPEGLibrary::AvcodecFree(void * ptr)
- {
-   WaitAndSignal m(processLock);
--  Favcodec_free(ptr);
-+  av_free(ptr);
- }
- void FFMPEGLibrary::AvSetDimensions(AVCodecContext *s, int width, int height)
- {
-   WaitAndSignal m(processLock);
--  Favcodec_set_dimensions(s, width, height);
-+  avcodec_set_dimensions(s, width, height);
- }
- void FFMPEGLibrary::AvLogSetLevel(int level)
- {
--  FAv_log_set_level(level);
-+  av_log_set_level(level);
- }
- void FFMPEGLibrary::AvLogSetCallback(void (*callback)(void*, int, const char*, va_list))
- {
--  FAv_log_set_callback(callback);
-+  av_log_set_callback(callback);
- }
- bool FFMPEGLibrary::IsLoaded()
---- a/plugins/video/common/dyna.h
-+++ b/plugins/video/common/dyna.h
-@@ -95,7 +95,7 @@
-     AVCodec *AvcodecFindEncoder(enum CodecID id);
-     AVCodec *AvcodecFindDecoder(enum CodecID id);
--    AVCodecContext *AvcodecAllocContext(void);
-+    AVCodecContext *AvcodecAllocContext(AVCodec*);
-     AVFrame *AvcodecAllocFrame(void);
-     int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec);
-     int AvcodecClose(AVCodecContext *ctx);
-@@ -120,26 +120,6 @@
-     CodecID m_codec;
-     char m_codecString[32];
--    void (*Favcodec_init)(void);
--    void (*Fav_init_packet)(AVPacket *pkt);
--
--    void (*Favcodec_register_all)(void);
--    AVCodec *(*Favcodec_find_encoder)(enum CodecID id);
--    AVCodec *(*Favcodec_find_decoder)(enum CodecID id);
--    AVCodecContext *(*Favcodec_alloc_context)(void);
--    AVFrame *(*Favcodec_alloc_frame)(void);
--    int (*Favcodec_open)(AVCodecContext *ctx, AVCodec *codec);
--    int (*Favcodec_close)(AVCodecContext *ctx);
--    int (*Favcodec_encode_video)(AVCodecContext *ctx, BYTE *buf, int buf_size, const AVFrame *pict);
--    int (*Favcodec_decode_video)(AVCodecContext *ctx, AVFrame *pict, int *got_picture_ptr, AVPacket *avpkt);
--    unsigned (*Favcodec_version)(void);
--    void (*Favcodec_set_dimensions)(AVCodecContext *ctx, int width, int height);
--
--    void (*Favcodec_free)(void *);
--
--    void (*FAv_log_set_level)(int level);
--    void (*FAv_log_set_callback)(void (*callback)(void*, int, const char*, va_list));
--
-     bool m_isLoadedOK;
- };
---- a/plugins/video/common/ffmpeg.h
-+++ b/plugins/video/common/ffmpeg.h
-@@ -45,11 +45,13 @@
- #include "platform.h"
--#include "libavcodec/avcodec.h"
-+extern "C" {
-+#include <libavcodec/avcodec.h>
- // AVPacket was declared in avformat.h before April 2009
- #if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 25, 0)
--#include "libavformat/avformat.h"
-+#include <libavformat/avformat.h>
- #endif
-+}
- #ifndef LIBAVCODEC_VERSION_INT
- #error Libavcodec include is not correct
---- a/plugins/video/H.263-1998/Makefile.in
-+++ b/plugins/video/H.263-1998/Makefile.in
-@@ -34,8 +34,8 @@
-              $(COMMONDIR)/mpi.cxx \
-              $(COMMONDIR)/dyna.cxx
--CFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR)
--LIBS   += @DL_LIBS@
-+CFLAGS += @LIBAVCODEC_CFLAGS@ @LIBAVUTIL_CFLAGS@ -I$(COMMONDIR)
-+LIBS   += @DL_LIBS@ @LIBAVCODEC_LIBS@ @LIBAVUTIL_LIBS@
- HAVE_LIBAVCODEC_RTP_MODE=@HAVE_LIBAVCODEC_RTP_MODE@
- ifeq ($(HAVE_LIBAVCODEC_RTP_MODE),yes)
---- a/plugins/video/H.264/Makefile.in
-+++ b/plugins/video/H.264/Makefile.in
-@@ -34,8 +34,8 @@
-            $(SHAREDDIR)/x264wrap.cxx \
-            $(COMMONDIR)/dyna.cxx \
--CFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR) -DLIB_DIR='"$(libdir)"' -DVC_PLUGIN_DIR='"@VC_PLUGIN_DIR@"'
--LIBS   += @DL_LIBS@
-+CFLAGS += @LIBAVCODEC_CFLAGS@ @LIBAVUTIL_CFLAGS@ -I$(COMMONDIR) -DLIB_DIR='"$(libdir)"' -DVC_PLUGIN_DIR='"@VC_PLUGIN_DIR@"'
-+LIBS   += @DL_LIBS@ @LIBAVCODEC_LIBS@ @LIBAVUTIL_LIBS@
- IS_H264_LICENSED:=@IS_H264_LICENSED@
- ifeq ($(IS_H264_LICENSED),yes)
---- a/plugins/video/MPEG4-ffmpeg/Makefile.in
-+++ b/plugins/video/MPEG4-ffmpeg/Makefile.in
-@@ -30,8 +30,8 @@
- SRCDIR    := .
- SRCS      := mpeg4.cxx $(COMMONDIR)/dyna.cxx
--CFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR)
--LIBS   += @DL_LIBS@
-+CFLAGS += @LIBAVCODEC_CFLAGS@ @LIBAVUTIL_CFLAGS@ -I$(COMMONDIR)
-+LIBS   += @DL_LIBS@ @LIBAVCODEC_LIBS@ @LIBAVUTIL_LIBS@
- # Add LIBAVCODEC_SOURCE_DIR to the include path so we can #include <libavcodec/...h>
- # Also add libavutil, so ffmpeg headers can #include "log.h".
-Description: Fix compilation against libav10 
-Author: Reinhard Tartler <siretart@tauware.de>
-Bug-Debian: http://bugs.debian.org/739439
-
---- a/plugins/video/H.263-1998/h263-1998.cxx
-+++ b/plugins/video/H.263-1998/h263-1998.cxx
-@@ -94,7 +94,7 @@ static struct StdSizes {
-   { CIF16_WIDTH, CIF16_HEIGHT, PLUGINCODEC_CIF16_MPI },
- };
--static FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H263P);
-+static FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H263P);
- /////////////////////////////////////////////////////////////////////////////
-@@ -203,7 +203,7 @@ H263_Base_EncoderContext::~H263_Base_Enc
-   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");
-@@ -589,7 +589,7 @@ void H263_RFC2190_EncoderContext::RTPCal
- bool H263_RFC2190_EncoderContext::Init()
- {
--  if (!H263_Base_EncoderContext::Init(CODEC_ID_H263))
-+  if (!H263_Base_EncoderContext::Init(AV_CODEC_ID_H263))
-     return false;
- #if LIBAVCODEC_RTP_MODE
-@@ -632,7 +632,7 @@ H263_RFC2429_EncoderContext::~H263_RFC24
- bool H263_RFC2429_EncoderContext::Init()
- {
--  return H263_Base_EncoderContext::Init(CODEC_ID_H263P);
-+  return H263_Base_EncoderContext::Init(AV_CODEC_ID_H263P);
- }
-@@ -656,7 +656,7 @@ H263_Base_DecoderContext::H263_Base_Deco
-   if (!FFMPEGLibraryInstance.Load())
-     return;
--  if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H263)) == NULL) {
-+  if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H263)) == NULL) {
-     PTRACE(1, m_prefix, "Codec not found for decoder");
-     return;
-   }
---- a/plugins/video/H.264/h264-x264.cxx
-+++ b/plugins/video/H.264/h264-x264.cxx
-@@ -105,7 +105,7 @@ static struct PluginCodec_information Li
- ///////////////////////////////////////////////////////////////////////////////
--FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H264);
-+FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H264);
- PLUGINCODEC_CONTROL_LOG_FUNCTION_DEF
-@@ -1065,17 +1065,17 @@ class MyDecoder : public PluginCodec<MY_
-          allows you to fail the create operation (return false), which cannot
-          be done in the normal C++ constructor. */
--      if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H264)) == NULL)
-+      if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H264)) == NULL)
-         return false;
-       if ((m_context = FFMPEGLibraryInstance.AvcodecAllocContext(m_codec)) == NULL)
-         return false;
-       m_context->workaround_bugs = FF_BUG_AUTODETECT;
--      m_context->idct_algo = FF_IDCT_H264;
-+      m_context->idct_algo = FF_IDCT_AUTO;
-       m_context->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK;
-       m_context->flags = CODEC_FLAG_INPUT_PRESERVED | CODEC_FLAG_EMU_EDGE;
--      m_context->flags2 = CODEC_FLAG2_SKIP_RD |
-+      m_context->flags2 = 
- #ifdef CODEC_FLAG2_DROP_FRAME_TIMECODE
-                           CODEC_FLAG2_DROP_FRAME_TIMECODE |
- #endif
---- a/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
-+++ b/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
-@@ -205,7 +205,7 @@ const static struct mpeg4_resolution {
-     { 0 }
- };
--FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_MPEG4);
-+FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_MPEG4);
- static bool mpeg4IsIframe (BYTE * frameBuffer, unsigned int frameLen )
-@@ -688,7 +688,7 @@ void MPEG4EncoderContext::ResizeEncoding
- bool MPEG4EncoderContext::OpenCodec()
- {
--  if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(CODEC_ID_MPEG4)) == NULL){
-+  if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(AV_CODEC_ID_MPEG4)) == NULL){
-     PTRACE(1, "MPEG4", "Encoder not found");
-     return false;
+diff -ur opal-3.10.11.org/plugins/audio/G.722.2/G7222Codec.cpp opal-3.10.11/plugins/audio/G.722.2/G7222Codec.cpp
+--- opal-3.10.11.org/plugins/audio/G.722.2/G7222Codec.cpp      2013-08-15 01:22:45.000000000 +0200
++++ opal-3.10.11/plugins/audio/G.722.2/G7222Codec.cpp  2018-09-29 11:58:07.796456792 +0200
+@@ -109,7 +109,7 @@
+ const UWord16 AMRWB_efficient_ToC_bits = 6;
+ const UWord16 AMRWB_efficient_CMR_bits = 4;
+-const UWord8 AMRWB_block_size_octet[16]= { 18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1 };
++const unsigned AMRWB_block_size_octet[16]= { 18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 6, 0, 0, 0, 1, 1 };
+ // RFC 3267 octet-aligned ToC adds 8 bits to each core speech bits frame and 8 per packet for header
+ // RFC 3267 bandwidth-efficient adds 6 bits to each core speech bits frame and 4 per packet for header
+@@ -186,7 +186,7 @@
+       //PTRACE(2, "Codec\tAMR-WB encoder: Audio data of size " << *fromLen << " did not match expected " << AMRWB_FRAME_SAMPLES * sizeof(short));
+     return 0;
    }
-@@ -1390,7 +1390,7 @@ void MPEG4DecoderContext::ResizeDecoding
- bool MPEG4DecoderContext::OpenCodec()
- {
--    if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_MPEG4)) == NULL) {
-+    if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_MPEG4)) == NULL) {
-         PTRACE(1, "MPEG4", "Decoder not found for encoder");
-         return false;
-     }
---- a/plugins/video/H.263-1998/h263-1998.h
-+++ b/plugins/video/H.263-1998/h263-1998.h
-@@ -115,7 +115,7 @@ class H263_Base_EncoderContext
-     virtual ~H263_Base_EncoderContext();
-     virtual bool Init() = 0;
--    virtual bool Init(CodecID codecId);
-+    virtual bool Init(AVCodecID codecId);
-     virtual bool SetOptions(const char * const * options);
-     virtual void SetOption(const char * option, const char * value);
---- a/plugins/video/common/dyna.cxx
-+++ b/plugins/video/common/dyna.cxx
-@@ -217,14 +217,14 @@ static void logCallbackFFMPEG(void * avc
+-  if (*toLen < (unsigned) AMRWB_block_size_octet[Context->mode] + 1)
++  if (*toLen < AMRWB_block_size_octet[Context->mode] + 1)
+   {
+       //PTRACE(2,"Codec\tAMR-WB encoder: Output buffer of size " << *toLen << " too short for mode " << mode);
+       return 0;
+@@ -346,7 +346,7 @@
+       return 0;
+     case -2:
+-      //PTRACE(2, "Codec\tAMR-WB decoder: Packet size " << *fromLen << " did not match expected " << (unsigned)(AMRWB_block_size_octet[FrameType] + 1) << " for frame type " << FrameType);
++      //PTRACE(2, "Codec\tAMR-WB decoder: Packet size " << *fromLen << " did not match expected " << (AMRWB_block_size_octet[FrameType] + 1) << " for frame type " << FrameType);
+       return 0;
+     case -3:
+diff -ur opal-3.10.11.org/plugins/audio/Speex/speexcodec.cxx opal-3.10.11/plugins/audio/Speex/speexcodec.cxx
+--- opal-3.10.11.org/plugins/audio/Speex/speexcodec.cxx        2013-08-15 01:22:44.000000000 +0200
++++ opal-3.10.11/plugins/audio/Speex/speexcodec.cxx    2018-09-29 11:58:07.796456792 +0200
+@@ -756,18 +756,19 @@
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+-#define NARROW_BITSPERFRAME_MODE2    (Speex_Bits_Per_Second(2, 8000)/50) // 119             // 5950
+-#define NARROW_BITSPERFRAME_MODE3    (Speex_Bits_Per_Second(3, 8000)/50) // 160             // 8000
+-#define NARROW_BITSPERFRAME_MODE4    (Speex_Bits_Per_Second(4, 8000)/50) // 220             // 11000 
+-#define NARROW_BITSPERFRAME_MODE5    (Speex_Bits_Per_Second(5, 8000)/50) // 300             // 15000
+-#define NARROW_BITSPERFRAME_MODE6    (Speex_Bits_Per_Second(6, 8000)/50) // 364             // 18200
+-#define NARROW_BITSPERFRAME_MODE7    (Speex_Bits_Per_Second(7, 8000)/50) // 492             // 26400
++#define NARROW_BITSPERFRAME_MODE(m)  ((unsigned)Speex_Bits_Per_Second(m, 8000)/50)
++#define NARROW_BITSPERFRAME_MODE2    NARROW_BITSPERFRAME_MODE(2) // 119             // 5950
++#define NARROW_BITSPERFRAME_MODE3    NARROW_BITSPERFRAME_MODE(3) // 160             // 8000
++#define NARROW_BITSPERFRAME_MODE4    NARROW_BITSPERFRAME_MODE(4) // 220             // 11000 
++#define NARROW_BITSPERFRAME_MODE5    NARROW_BITSPERFRAME_MODE(5) // 300             // 15000
++#define NARROW_BITSPERFRAME_MODE6    NARROW_BITSPERFRAME_MODE(6) // 364             // 18200
++#define NARROW_BITSPERFRAME_MODE7    NARROW_BITSPERFRAME_MODE(7) // 492             // 26400
+ //#define WIDE_BITSPERFRAME_MODE2    ((Speex_Bytes_Per_Frame(2, 16000)/50) // NARROW_BITSPERFRAME_MODE2 + 112)     // 11550
+ //#define WIDE_BITSPERFRAME_MODE3    ((Speex_Bytes_Per_Frame(3, 16000)/50)     // 17600
+ //#define WIDE_BITSPERFRAME_MODE4    ((Speex_Bytes_Per_Frame(4, 16000)/50)     // 28600
+ //#define WIDE_BITSPERFRAME_MODE5    ((Speex_Bytes_Per_Frame(5, 16000)/50)     // 28600
+-#define WIDE_BITSPERFRAME_MODE6    (Speex_Bits_Per_Second(6, 16000)/50)     // 20600
++#define WIDE_BITSPERFRAME_MODE6    ((unsigned)Speex_Bits_Per_Second(6, 16000)/50)     // 20600
+ static struct PluginCodec_Definition ver1SpeexCodecDefn[] = {
+diff -ur opal-3.10.11.org/plugins/video/common/dyna.cxx opal-3.10.11/plugins/video/common/dyna.cxx
+--- opal-3.10.11.org/plugins/video/common/dyna.cxx     2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/common/dyna.cxx 2018-09-29 11:58:52.681123038 +0200
+@@ -210,14 +210,14 @@
  #endif
  
  
@@ -685,14 +80,14 @@ Bug-Debian: http://bugs.debian.org/739439
        snprintf( m_codecString, sizeof(m_codecString), "MPEG4");
    m_isLoadedOK = false;
  }
-@@ -268,12 +268,12 @@ bool FFMPEGLibrary::Load()
+@@ -348,12 +348,12 @@
    return true;
  }
  
 -AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum CodecID id)
 +AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum AVCodecID id)
  {
-   return avcodec_find_encoder(id);
+   return Favcodec_find_encoder(id);
  }
  
 -AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum CodecID id)
@@ -700,30 +95,19 @@ Bug-Debian: http://bugs.debian.org/739439
  {
    WaitAndSignal m(processLock);
  
-@@ -308,13 +308,18 @@ int FFMPEGLibrary::AvcodecClose(AVCodecC
-   return avcodec_close(ctx);
+@@ -374,7 +374,7 @@
+   return Favcodec_alloc_frame();
  }
  
-+#undef  FFMAX
-+#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) 
- int FFMPEGLibrary::AvcodecEncodeVideo(AVCodecContext *ctx, BYTE *buf, int buf_size, const AVFrame *pict)
+-int FFMPEGLibrary::AvcodecOpen(AVCodecContext *ctx, AVCodec *codec)
++int FFMPEGLibrary::AvcodecOpen(AVCodecContext *ctx, AVCodec *codec, AVDictionary **options)
  {
-+  AVPacket pkt = { 0 };
-+  int ret, got_output;
-   int res;
--  res = avcodec_encode_video(ctx, buf, buf_size, pict);
-+  ret = avcodec_encode_video2(ctx, &pkt, pict, &got_output);
--  PTRACE(6, m_codecString, "DYNA\tEncoded into " << res << " bytes, max " << buf_size);
-+  PTRACE(6, m_codecString, "DYNA\tEncoded into " << ret << " bytes, max " << buf_size);
-+  memcpy(buf, pkt.data, FFMAX(pkt.size, buf_size));
-   return res;
- }
+   WaitAndSignal m(processLock);
  
---- a/plugins/video/common/dyna.h
-+++ b/plugins/video/common/dyna.h
-@@ -88,13 +88,13 @@ class DynaLink
+diff -ur opal-3.10.11.org/plugins/video/common/dyna.h opal-3.10.11/plugins/video/common/dyna.h
+--- opal-3.10.11.org/plugins/video/common/dyna.h       2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/common/dyna.h   2018-09-29 11:58:52.681123038 +0200
+@@ -88,16 +88,16 @@
  class FFMPEGLibrary 
  {
    public:
@@ -737,10 +121,14 @@ Bug-Debian: http://bugs.debian.org/739439
 -    AVCodec *AvcodecFindDecoder(enum CodecID id);
 +    AVCodec *AvcodecFindEncoder(enum AVCodecID id);
 +    AVCodec *AvcodecFindDecoder(enum AVCodecID id);
-     AVCodecContext *AvcodecAllocContext(AVCodec*);
+     AVCodecContext *AvcodecAllocContext(void);
      AVFrame *AvcodecAllocFrame(void);
-     int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec);
-@@ -117,7 +117,7 @@ class FFMPEGLibrary
+-    int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec);
++    int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec, AVDictionary **options);
+     int AvcodecClose(AVCodecContext *ctx);
+     int AvcodecEncodeVideo(AVCodecContext *ctx, BYTE *buf, int buf_size, const AVFrame *pict);
+     int AvcodecDecodeVideo(AVCodecContext *ctx, AVFrame *pict, int *got_picture_ptr, BYTE *buf, int buf_size);
+@@ -117,15 +117,15 @@
      DynaLink m_libAvcodec;
      DynaLink m_libAvutil;
  
@@ -748,191 +136,196 @@ Bug-Debian: http://bugs.debian.org/739439
 +    AVCodecID m_codec;
      char m_codecString[32];
  
-     bool m_isLoadedOK;
-Description: Replace deprecated FFmpeg API
-Author: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
-Last-Update: <2015-11-02>
-
---- opal-3.10.10~dfsg2.orig/plugins/video/H.263-1998/h263-1998.cxx
-+++ opal-3.10.10~dfsg2/plugins/video/H.263-1998/h263-1998.cxx
-@@ -230,11 +230,10 @@ bool H263_Base_EncoderContext::Init(AVCo
+     void (*Favcodec_init)(void);
+     void (*Fav_init_packet)(AVPacket *pkt);
  
-   m_context->opaque = this;
--  m_context->flags = CODEC_FLAG_EMU_EDGE   // don't draw edges
--                   | CODEC_FLAG_TRUNCATED  // Possible missing packets
-+  m_context->flags = CODEC_FLAG_TRUNCATED  // Possible missing packets
-                    ;
--  m_context->pix_fmt = PIX_FMT_YUV420P;
-+  m_context->pix_fmt = AV_PIX_FMT_YUV420P;
-   m_context->gop_size = H263_KEY_FRAME_INTERVAL;
-   // X-Lite does not like Custom Picture frequency clocks... stick to 29.97Hz
-@@ -440,9 +439,6 @@ bool H263_Base_EncoderContext::OpenCodec
-   m_inputFrame->data[1] = m_inputFrame->data[0] + planeSize;
-   m_inputFrame->data[2] = m_inputFrame->data[1] + (planeSize / 4);
--  if (m_context->width > 352)
--    m_context->flags &= ~CODEC_FLAG_EMU_EDGE; // Totally bizarre! FFMPEG crashes if on for CIF4
--
-   // Dump info
-   PTRACE(5, m_prefix, "Size is " << m_context->width << "x" << m_context->height);
-   PTRACE(5, m_prefix, "GOP is " << m_context->gop_size);
-@@ -456,7 +452,7 @@ 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);
--  return FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec) == 0;
-+  return FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec, NULL) == 0;
- }
- void H263_Base_EncoderContext::CloseCodec()
-@@ -707,7 +703,7 @@ bool H263_Base_DecoderContext::OpenCodec
-     return 0;
-   }
--  if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec) < 0) {
-+  if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec, NULL) < 0) {
-     PTRACE(1, m_prefix, "Failed to open H.263 decoder");
-     return false;
-   }
---- opal-3.10.10~dfsg2.orig/plugins/video/H.264/h264-x264.cxx
-+++ opal-3.10.10~dfsg2/plugins/video/H.264/h264-x264.cxx
-@@ -1074,7 +1074,6 @@ class MyDecoder : public PluginCodec<MY_
-       m_context->workaround_bugs = FF_BUG_AUTODETECT;
-       m_context->idct_algo = FF_IDCT_AUTO;
-       m_context->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK;
--      m_context->flags = CODEC_FLAG_INPUT_PRESERVED | CODEC_FLAG_EMU_EDGE;
-       m_context->flags2 = 
- #ifdef CODEC_FLAG2_DROP_FRAME_TIMECODE
-                           CODEC_FLAG2_DROP_FRAME_TIMECODE |
-@@ -1084,7 +1083,7 @@ class MyDecoder : public PluginCodec<MY_
-       if ((m_picture = FFMPEGLibraryInstance.AvcodecAllocFrame()) == NULL)
-         return false;
--      if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec) < 0)
-+      if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec, NULL) < 0)
-         return false;
-       PTRACE(4, MY_CODEC_LOG, "Opened decoder (SVN $Revision: 28048 $)");
---- opal-3.10.10~dfsg2.orig/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
-+++ opal-3.10.10~dfsg2/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
-@@ -539,7 +539,7 @@ void MPEG4EncoderContext::ResetBitCounte
- //
+     void (*Favcodec_register_all)(void);
+-    AVCodec *(*Favcodec_find_encoder)(enum CodecID id);
+-    AVCodec *(*Favcodec_find_decoder)(enum CodecID id);
++    AVCodec *(*Favcodec_find_encoder)(enum AVCodecID id);
++    AVCodec *(*Favcodec_find_decoder)(enum AVCodecID id);
+     AVCodecContext *(*Favcodec_alloc_context)(void);
+     AVFrame *(*Favcodec_alloc_frame)(void);
+     int (*Favcodec_open)(AVCodecContext *ctx, AVCodec *codec);
+diff -ur opal-3.10.11.org/plugins/video/common/ffmpeg/libavcodec/avcodec.h opal-3.10.11/plugins/video/common/ffmpeg/libavcodec/avcodec.h
+--- opal-3.10.11.org/plugins/video/common/ffmpeg/libavcodec/avcodec.h  2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/common/ffmpeg/libavcodec/avcodec.h      2018-09-29 11:58:31.047147254 +0200
+@@ -101,7 +101,7 @@
+  * 1. no value of a existing codec ID changes (that would break ABI),
+  * 2. it is as close as possible to similar codecs.
+  */
+-enum CodecID {
++enum AVCodecID {
+     CODEC_ID_NONE,
+     /* video codecs */
+@@ -1390,7 +1390,7 @@
+     char codec_name[32];
+     enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
+-    enum CodecID codec_id; /* see CODEC_ID_xxx */
++    enum AVCodecID codec_id; /* see CODEC_ID_xxx */
+     /**
+      * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
+@@ -2843,7 +2843,7 @@
+      */
+     const char *name;
+     enum AVMediaType type;
+-    enum CodecID id;
++    enum AVCodecID id;
+     int priv_data_size;
+     int (*init)(AVCodecContext *);
+     int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data);
+@@ -2898,7 +2898,7 @@
+      *
+      * See CODEC_ID_xxx
+      */
+-    enum CodecID id;
++    enum AVCodecID id;
+     /**
+      * Supported pixel format.
+@@ -3402,10 +3402,10 @@
+ /**
+  * Find a registered encoder with a matching codec ID.
+  *
+- * @param id CodecID of the requested encoder
++ * @param id AVCodecID of the requested encoder
+  * @return An encoder if one was found, NULL otherwise.
+  */
+-AVCodec *avcodec_find_encoder(enum CodecID id);
++AVCodec *avcodec_find_encoder(enum AVCodecID id);
+ /**
+  * Find a registered encoder with the specified name.
+@@ -3418,10 +3418,10 @@
+ /**
+  * Find a registered decoder with a matching codec ID.
+  *
+- * @param id CodecID of the requested decoder
++ * @param id AVCodecID of the requested decoder
+  * @return A decoder if one was found, NULL otherwise.
+  */
+-AVCodec *avcodec_find_decoder(enum CodecID id);
++AVCodec *avcodec_find_decoder(enum AVCodecID id);
+ /**
+  * Find a registered decoder with the specified name.
+@@ -3822,7 +3822,7 @@
+  * @param[in] codec_id the codec
+  * @return Number of bits per sample or zero if unknown for the given codec.
+  */
+-int av_get_bits_per_sample(enum CodecID codec_id);
++int av_get_bits_per_sample(enum AVCodecID codec_id);
+ #if FF_API_OLD_SAMPLE_FMT
+ /**
+diff -ur opal-3.10.11.org/plugins/video/common/ffmpeg.h opal-3.10.11/plugins/video/common/ffmpeg.h
+--- opal-3.10.11.org/plugins/video/common/ffmpeg.h     2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/common/ffmpeg.h 2018-09-29 11:58:52.681123038 +0200
+@@ -46,6 +46,7 @@
+ #include "platform.h"
  
- void MPEG4EncoderContext::SetStaticEncodingParams(){
--    m_avcontext->pix_fmt = PIX_FMT_YUV420P;
-+    m_avcontext->pix_fmt = AV_PIX_FMT_YUV420P;
-     m_avcontext->mb_decision = FF_MB_DECISION_SIMPLE;    // high quality off
-     m_avcontext->rtp_payload_size = 750;                 // ffh263 uses 750
-     m_avcontext->rtp_callback = &MPEG4EncoderContext::RtpCallback;
-@@ -595,7 +595,6 @@ void MPEG4EncoderContext::SetStaticEncod
-     m_avcontext->flags|=CODEC_FLAG_AC_PRED;
-     /*c->flags|=CODEC_FLAG_QPEL;*/ /*don't enable this one: this forces profile_level to advanced simple profile */
-     m_avcontext->flags|=CODEC_FLAG_4MV;
--    m_avcontext->flags|=CODEC_FLAG_GMC;
-     m_avcontext->flags|=CODEC_FLAG_LOOP_FILTER;
- #endif
-     m_avcontext->opaque = this;              // for use in RTP callback
-@@ -710,13 +709,15 @@ bool MPEG4EncoderContext::OpenCodec()
-   if (PTRACE_CHECK(4)) {
-     m_avcontext->debug |= FF_DEBUG_RC;
-     m_avcontext->debug |= FF_DEBUG_PICT_INFO;
--    m_avcontext->debug |= FF_DEBUG_MV;
-+//    m_avcontext->debug |= FF_DEBUG_MV;
-   }
+ #include "libavcodec/avcodec.h"
++#include "libavutil/imgutils.h"
+ // AVPacket was declared in avformat.h before April 2009
+ #if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 25, 0)
+ #include "libavformat/avformat.h"
+diff -ur opal-3.10.11.org/plugins/video/common/mpi.cxx opal-3.10.11/plugins/video/common/mpi.cxx
+--- opal-3.10.11.org/plugins/video/common/mpi.cxx      2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/common/mpi.cxx  2018-09-29 12:00:33.957463916 +0200
+@@ -132,8 +132,8 @@
+   // to the desired one or matches it
+   for (i=0; i < MPIs.size(); i++) {
+     // we square the value in order to get absolute distances
+-    distance = ( abs(MPIs[i].width  - desiredWidth ) *
+-                 abs(MPIs[i].height - desiredHeight) );
++    distance = ( abs((int)(MPIs[i].width  - desiredWidth )) *
++                 abs((int)(MPIs[i].height - desiredHeight)) );
+     if (distance < minDistance) {
+       minDistance = distance;
+diff -ur opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.cxx opal-3.10.11/plugins/video/H.263-1998/h263-1998.cxx
+--- opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.cxx    2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.263-1998/h263-1998.cxx        2018-09-29 11:59:17.348522238 +0200
+@@ -48,6 +48,10 @@
  #endif
-   
-   SetStaticEncodingParams();
-   SetDynamicEncodingParams(false);    // don't force a restart, it's not open
--  if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec) < 0)
-+  AVDictionary *opts = NULL;
-+  av_dict_set_int(&opts, "gmc", 1, 0);
-+  if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec, &opts) < 0)
-   {
-     PTRACE(1, "MPEG4", "Encoder could not be opened");
-     return false;
-@@ -1411,7 +1412,7 @@ bool MPEG4DecoderContext::OpenCodec()
  
-     SetStaticDecodingParams();
-     SetDynamicDecodingParams(false);    // don't force a restart, it's not open
--    if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec) < 0) {
-+    if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec, NULL) < 0) {
-         PTRACE(1, "MPEG4", "Decoder failed to open");
-         return false;
-     }
---- opal-3.10.10~dfsg2.orig/plugins/video/common/dyna.cxx
-+++ opal-3.10.10~dfsg2/plugins/video/common/dyna.cxx
-@@ -291,14 +291,14 @@ AVFrame *FFMPEGLibrary::AvcodecAllocFram
- {
-   WaitAndSignal m(processLock);
+ #include "h263-1998.h"
++extern "C"
++{
++#include <libavutil/opt.h>
++}
+ #include <limits>
+ #include <iomanip>
+ #include <stdio.h>
+@@ -70,7 +74,7 @@
  
--  return avcodec_alloc_frame();
-+  return av_frame_alloc();
- }
  
--int FFMPEGLibrary::AvcodecOpen(AVCodecContext *ctx, AVCodec *codec)
-+int FFMPEGLibrary::AvcodecOpen(AVCodecContext *ctx, AVCodec *codec, AVDictionary **options)
- {
-   WaitAndSignal m(processLock);
+ #define MAX_H263_CUSTOM_SIZES 10
+-#define DEFAULT_CUSTOM_MPI "0,0,"STRINGIZE(PLUGINCODEC_MPI_DISABLED)
++#define DEFAULT_CUSTOM_MPI "0,0," STRINGIZE(PLUGINCODEC_MPI_DISABLED)
  
--  return avcodec_open2(ctx, codec, NULL);
-+  return avcodec_open2(ctx, codec, options);
- }
+ static struct StdSizes {
+   enum { 
+@@ -94,7 +98,7 @@
+   { CIF16_WIDTH, CIF16_HEIGHT, PLUGINCODEC_CIF16_MPI },
+ };
  
- int FFMPEGLibrary::AvcodecClose(AVCodecContext *ctx)
-@@ -344,7 +344,15 @@ void FFMPEGLibrary::AvSetDimensions(AVCo
- {
-   WaitAndSignal m(processLock);
+-static FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H263P);
++static FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H263P);
  
--  avcodec_set_dimensions(s, width, height);
-+  if (av_image_check_size(width, height, 0, s) < 0) {
-+    av_log(s, AV_LOG_WARNING, "Failed to set dimensions %d %d\n", width, height);
-+    width = height = 0;
-+  }
-+
-+  s->coded_width  = width;
-+  s->coded_height = height;
-+  s->width        = (width + (1 << av_codec_get_lowres(s)) - 1) >> av_codec_get_lowres(s);
-+  s->height       = (height + (1 << av_codec_get_lowres(s)) - 1) >> av_codec_get_lowres(s);
- }
  
- void FFMPEGLibrary::AvLogSetLevel(int level)
---- opal-3.10.10~dfsg2.orig/plugins/video/common/dyna.h
-+++ opal-3.10.10~dfsg2/plugins/video/common/dyna.h
-@@ -97,7 +97,7 @@ class FFMPEGLibrary
-     AVCodec *AvcodecFindDecoder(enum AVCodecID id);
-     AVCodecContext *AvcodecAllocContext(AVCodec*);
-     AVFrame *AvcodecAllocFrame(void);
--    int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec);
-+    int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec, AVDictionary **options);
-     int AvcodecClose(AVCodecContext *ctx);
-     int AvcodecEncodeVideo(AVCodecContext *ctx, BYTE *buf, int buf_size, const AVFrame *pict);
-     int AvcodecDecodeVideo(AVCodecContext *ctx, AVFrame *pict, int *got_picture_ptr, BYTE *buf, int buf_size);
---- opal-3.10.10~dfsg2.orig/plugins/video/common/ffmpeg.h
-+++ opal-3.10.10~dfsg2/plugins/video/common/ffmpeg.h
-@@ -47,6 +47,7 @@
+ /////////////////////////////////////////////////////////////////////////////
+@@ -203,7 +207,7 @@
+   PTRACE(4, m_prefix, "Encoder closed");
+ }
  
- extern "C" {
- #include <libavcodec/avcodec.h>
-+#include <libavutil/imgutils.h>
- // AVPacket was declared in avformat.h before April 2009
- #if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 25, 0)
- #include <libavformat/avformat.h>
-diff -ur opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.cxx opal-3.10.11/plugins/video/H.263-1998/h263-1998.cxx
---- opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.cxx    2018-09-27 12:41:23.304757504 +0200
-+++ opal-3.10.11/plugins/video/H.263-1998/h263-1998.cxx        2018-09-27 12:59:25.737615925 +0200
-@@ -230,7 +230,7 @@
+-bool H263_Base_EncoderContext::Init(CodecID codecId)
++bool H263_Base_EncoderContext::Init(AVCodecID codecId)
+ {
+   PTRACE(5, m_prefix, "Opening encoder");
+@@ -230,11 +234,10 @@
  
    m_context->opaque = this;
  
--  m_context->flags = CODEC_FLAG_TRUNCATED  // Possible missing packets
+-  m_context->flags = CODEC_FLAG_EMU_EDGE   // don't draw edges
+-                   | CODEC_FLAG_TRUNCATED  // Possible missing packets
 +  m_context->flags = AV_CODEC_FLAG_TRUNCATED  // Possible missing packets
                     ;
  
-   m_context->pix_fmt = AV_PIX_FMT_YUV420P;
-@@ -341,9 +341,9 @@
+-  m_context->pix_fmt = PIX_FMT_YUV420P;
++  m_context->pix_fmt = AV_PIX_FMT_YUV420P;
+   m_context->gop_size = H263_KEY_FRAME_INTERVAL;
+   // X-Lite does not like Custom Picture frequency clocks... stick to 29.97Hz
+@@ -317,9 +320,9 @@
+     // 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 +331,9 @@
+     // 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
+@@ -340,9 +343,9 @@
      // Level 3+
      // works with eyeBeam
      if (atoi(value) == 1)
@@ -944,7 +337,7 @@ diff -ur opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.cxx opal-3.10.11/pl
      return;
    }
  
-@@ -351,9 +351,9 @@
+@@ -350,9 +353,9 @@
      // Annex J: Deblocking Filter
      // works with eyeBeam
      if (atoi(value) == 1)
@@ -956,18 +349,171 @@ diff -ur opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.cxx opal-3.10.11/pl
      return;
    }
  
-@@ -599,7 +599,7 @@
- #ifdef CODEC_FLAG_H263P_UMV
-   m_context->flags &= ~CODEC_FLAG_H263P_UMV;
- #endif
+@@ -360,9 +363,9 @@
+     // 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 +373,9 @@
+     // 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;
+   }
+@@ -416,8 +419,8 @@
+   m_context->qcompress = 0.5;               // qscale factor between easy & hard scenes (0.0-1.0)
+   // Lagrange multipliers - this is how the context defaults do it:
+-  m_context->lmin = m_context->qmin * FF_QP2LAMBDA;
+-  m_context->lmax = m_context->qmax * FF_QP2LAMBDA; 
++  av_opt_set_int(m_context->priv_data, "lmin", m_context->qmin * FF_QP2LAMBDA, 0);
++  av_opt_set_int(m_context->priv_data, "lmax", m_context->qmax * FF_QP2LAMBDA, 0);
+   // YUV420P input
+   m_inputFrame->linesize[0] = m_context->width;
+@@ -434,9 +437,6 @@
+   m_inputFrame->data[1] = m_inputFrame->data[0] + planeSize;
+   m_inputFrame->data[2] = m_inputFrame->data[1] + (planeSize / 4);
+-  if (m_context->width > 352)
+-    m_context->flags &= ~CODEC_FLAG_EMU_EDGE; // Totally bizarre! FFMPEG crashes if on for CIF4
+-
+   // Dump info
+   PTRACE(5, m_prefix, "Size is " << m_context->width << "x" << m_context->height);
+   PTRACE(5, m_prefix, "GOP is " << m_context->gop_size);
+@@ -450,16 +450,7 @@
+   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;
++  return FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec, NULL) == 0;
+ }
+ void H263_Base_EncoderContext::CloseCodec()
+@@ -521,7 +512,7 @@
+     // 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;
+@@ -592,7 +583,7 @@
+ bool H263_RFC2190_EncoderContext::Init()
+ {
+-  if (!H263_Base_EncoderContext::Init(CODEC_ID_H263))
++  if (!H263_Base_EncoderContext::Init(AV_CODEC_ID_H263))
+     return false;
+ #if LIBAVCODEC_RTP_MODE
+@@ -603,13 +594,13 @@
+   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;
 -  m_context->flags &= ~CODEC_FLAG_4MV;
++  av_opt_set_int(m_context->priv_data, "umv", 0, 0);
 +  m_context->flags &= ~AV_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;
+ }
+@@ -629,7 +620,7 @@
+ bool H263_RFC2429_EncoderContext::Init()
+ {
+-  return H263_Base_EncoderContext::Init(CODEC_ID_H263P);
++  return H263_Base_EncoderContext::Init(AV_CODEC_ID_H263P);
+ }
+@@ -653,7 +644,7 @@
+   if (!FFMPEGLibraryInstance.Load())
+     return;
+-  if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H263)) == NULL) {
++  if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H263)) == NULL) {
+     PTRACE(1, m_prefix, "Codec not found for decoder");
+     return;
+   }
+@@ -704,7 +695,7 @@
+     return 0;
+   }
+-  if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec) < 0) {
++  if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec, NULL) < 0) {
+     PTRACE(1, m_prefix, "Failed to open H.263 decoder");
+     return false;
+   }
+diff -ur opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.h opal-3.10.11/plugins/video/H.263-1998/h263-1998.h
+--- opal-3.10.11.org/plugins/video/H.263-1998/h263-1998.h      2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.263-1998/h263-1998.h  2018-09-29 11:58:31.047147254 +0200
+@@ -115,7 +115,7 @@
+     virtual ~H263_Base_EncoderContext();
+     virtual bool Init() = 0;
+-    virtual bool Init(CodecID codecId);
++    virtual bool Init(AVCodecID codecId);
+     virtual bool SetOptions(const char * const * options);
+     virtual void SetOption(const char * option, const char * value);
+diff -ur opal-3.10.11.org/plugins/video/H.263-1998/Makefile.in opal-3.10.11/plugins/video/H.263-1998/Makefile.in
+--- opal-3.10.11.org/plugins/video/H.263-1998/Makefile.in      2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.263-1998/Makefile.in  2018-09-29 11:58:31.047147254 +0200
+@@ -35,7 +35,7 @@
+              $(COMMONDIR)/dyna.cxx
+ CFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR)
+-LIBS   += @DL_LIBS@
++LIBS   += @DL_LIBS@ @LIBAVUTIL_LIBS@
+ HAVE_LIBAVCODEC_RTP_MODE=@HAVE_LIBAVCODEC_RTP_MODE@
+ ifeq ($(HAVE_LIBAVCODEC_RTP_MODE),yes)
+diff -ur opal-3.10.11.org/plugins/video/H.263-1998/rfc2190.cxx opal-3.10.11/plugins/video/H.263-1998/rfc2190.cxx
+--- opal-3.10.11.org/plugins/video/H.263-1998/rfc2190.cxx      2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.263-1998/rfc2190.cxx  2018-09-29 12:00:01.429831294 +0200
+@@ -25,7 +25,7 @@
+ #include <iostream>
+ #include <string.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ const unsigned char PSC[3]      = { 0x00, 0x00, 0x80 };
 diff -ur opal-3.10.11.org/plugins/video/H.263-1998/rfc2429.cxx opal-3.10.11/plugins/video/H.263-1998/rfc2429.cxx
 --- opal-3.10.11.org/plugins/video/H.263-1998/rfc2429.cxx      2013-08-15 01:22:47.000000000 +0200
-+++ opal-3.10.11/plugins/video/H.263-1998/rfc2429.cxx  2018-09-27 12:46:38.534350768 +0200
++++ opal-3.10.11/plugins/video/H.263-1998/rfc2429.cxx  2018-09-29 11:59:17.348522238 +0200
 @@ -286,7 +286,7 @@
  
  unsigned char * RFC2429Frame::GetBuffer()
@@ -990,36 +536,192 @@ diff -ur opal-3.10.11.org/plugins/video/H.263-1998/rfc2429.cxx opal-3.10.11/plug
      return false;
    }
  
+diff -ur opal-3.10.11.org/plugins/video/H.264/gpl/h264_helper.cxx opal-3.10.11/plugins/video/H.264/gpl/h264_helper.cxx
+--- opal-3.10.11.org/plugins/video/H.264/gpl/h264_helper.cxx   2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.264/gpl/h264_helper.cxx       2018-09-29 11:58:31.047147254 +0200
+@@ -27,6 +27,7 @@
+ #include <fstream>
+ #include <stdlib.h> 
+ #include <sys/stat.h>
++#include <unistd.h>
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+diff -ur opal-3.10.11.org/plugins/video/H.264/h264-x264.cxx opal-3.10.11/plugins/video/H.264/h264-x264.cxx
+--- opal-3.10.11.org/plugins/video/H.264/h264-x264.cxx 2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.264/h264-x264.cxx     2018-09-29 11:59:17.351855670 +0200
+@@ -40,6 +40,9 @@
+ #include "plugin-config.h"
+ #endif
++#define FF_IDCT_H264 11
++#define CODEC_FLAG2_SKIP_RD 0x00004000
++
+ #include <codec/opalplugin.hpp>
+ #include "../common/ffmpeg.h"
+@@ -104,7 +107,7 @@
+ ///////////////////////////////////////////////////////////////////////////////
+-FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H264);
++FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H264);
+ PLUGINCODEC_CONTROL_LOG_FUNCTION_DEF
+@@ -1064,27 +1067,23 @@
+          allows you to fail the create operation (return false), which cannot
+          be done in the normal C++ constructor. */
+-      if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H264)) == NULL)
++      if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H264)) == NULL)
+         return false;
+       if ((m_context = FFMPEGLibraryInstance.AvcodecAllocContext()) == NULL)
+         return false;
+       m_context->workaround_bugs = FF_BUG_AUTODETECT;
+-      m_context->error_recognition = FF_ER_AGGRESSIVE;
+       m_context->idct_algo = FF_IDCT_H264;
+       m_context->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK;
+-      m_context->flags = CODEC_FLAG_INPUT_PRESERVED | CODEC_FLAG_EMU_EDGE;
+-      m_context->flags2 = CODEC_FLAG2_BRDO |
+-                          CODEC_FLAG2_MEMC_ONLY |
+-                          CODEC_FLAG2_DROP_FRAME_TIMECODE |
++      m_context->flags2 = AV_CODEC_FLAG2_DROP_FRAME_TIMECODE |
+                           CODEC_FLAG2_SKIP_RD |
+-                          CODEC_FLAG2_CHUNKS;
++                          AV_CODEC_FLAG2_CHUNKS;
+       if ((m_picture = FFMPEGLibraryInstance.AvcodecAllocFrame()) == NULL)
+         return false;
+-      if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec) < 0)
++      if (FFMPEGLibraryInstance.AvcodecOpen(m_context, m_codec, NULL) < 0)
+         return false;
+       PTRACE(4, MY_CODEC_LOG, "Opened decoder (SVN $Revision: 28048 $)");
+@@ -1181,7 +1180,7 @@
+         uint8_t * src[3] = { m_picture->data[0], m_picture->data[1], m_picture->data[2] };
+         uint8_t * dst[3] = { OPAL_VIDEO_FRAME_DATA_PTR(videoHeader), dst[0] + ySize, dst[1] + uvSize };
+-        size_t dstLineSize[3] = { m_context->width, m_context->width/2, m_context->width/2 };
++        size_t dstLineSize[3] = { (size_t)m_context->width, (size_t)m_context->width/2, (size_t)m_context->width/2 };
+         for (int y = 0; y < m_context->height; ++y) {
+           for (int plane = 0; plane < 3; ++plane) {
+diff -ur opal-3.10.11.org/plugins/video/H.264/shared/x264wrap.cxx opal-3.10.11/plugins/video/H.264/shared/x264wrap.cxx
+--- opal-3.10.11.org/plugins/video/H.264/shared/x264wrap.cxx   2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/H.264/shared/x264wrap.cxx       2018-09-29 11:58:31.047147254 +0200
+@@ -33,6 +33,7 @@
+ #include <codec/opalplugin.hpp>
+ #include <stdio.h>
++#include <unistd.h>
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+diff -ur opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/Makefile.in opal-3.10.11/plugins/video/MPEG4-ffmpeg/Makefile.in
+--- opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/Makefile.in    2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/MPEG4-ffmpeg/Makefile.in        2018-09-29 11:58:31.047147254 +0200
+@@ -31,7 +31,7 @@
+ SRCS      := mpeg4.cxx $(COMMONDIR)/dyna.cxx
+ CFLAGS += @LIBAVCODEC_CFLAGS@ -I$(COMMONDIR)
+-LIBS   += @DL_LIBS@
++LIBS   += @DL_LIBS@ @LIBAVUTIL_LIBS@
+ # Add LIBAVCODEC_SOURCE_DIR to the include path so we can #include <libavcodec/...h>
+ # Also add libavutil, so ffmpeg headers can #include "log.h".
 diff -ur opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/mpeg4.cxx opal-3.10.11/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
---- opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/mpeg4.cxx      2018-09-27 12:41:23.304757504 +0200
-+++ opal-3.10.11/plugins/video/MPEG4-ffmpeg/mpeg4.cxx  2018-09-27 12:57:41.014440233 +0200
-@@ -589,13 +589,13 @@
+--- opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/mpeg4.cxx      2013-08-15 01:22:47.000000000 +0200
++++ opal-3.10.11/plugins/video/MPEG4-ffmpeg/mpeg4.cxx  2018-09-29 11:59:17.351855670 +0200
+@@ -103,6 +103,7 @@
+ #else /* LIBAVCODEC_HAVE_SOURCE_DIR */
+ #include "../common/ffmpeg.h"
++#include <libavutil/opt.h>
+ #endif /* LIBAVCODEC_HAVE_SOURCE_DIR */
+ }
+@@ -205,7 +206,7 @@
+     { 0 }
+ };
+-FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_MPEG4);
++FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_MPEG4);
+ static bool mpeg4IsIframe (BYTE * frameBuffer, unsigned int frameLen )
+@@ -539,7 +540,7 @@
+ //
+ void MPEG4EncoderContext::SetStaticEncodingParams(){
+-    m_avcontext->pix_fmt = PIX_FMT_YUV420P;
++    m_avcontext->pix_fmt = AV_PIX_FMT_YUV420P;
+     m_avcontext->mb_decision = FF_MB_DECISION_SIMPLE;    // high quality off
+     m_avcontext->rtp_payload_size = 750;                 // ffh263 uses 750
+     m_avcontext->rtp_callback = &MPEG4EncoderContext::RtpCallback;
+@@ -547,19 +548,19 @@
+     // Reduce the difference in quantization between frames.
+     m_avcontext->qblur = 0.3f;
+     // default is tex^qComp; 1 is constant bitrate
+-    m_avcontext->rc_eq = (char*) "1";
+-    //avcontext->rc_eq = "tex^qComp";
++    av_opt_set(m_avcontext->priv_data, "rc_eq", (char*) "1", 0);
++    //av_opt_set(m_avcontext->priv_data, "rc_eq", "tex^qComp", 0);
+     // These ones technically could be dynamic, I think
+     m_avcontext->rc_min_rate = 0;
+     // This is set to 0 in ffmpeg.c, the command-line utility.
+-    m_avcontext->rc_initial_cplx = 0.0f;
++    av_opt_set_double(m_avcontext->priv_data, "rc_init_cplx", 0.0f, 0);
+     // And this is set to 1.
+     // It seems to affect how aggressively the library will raise and lower
+     // quantization to keep bandwidth constant. Except it's in reference to
+     // the "vbv buffer", not bits per second, so nobody really knows how
+     // it works.
+-    m_avcontext->rc_buffer_aggressivity = 1.0f;
++    av_opt_set_double(m_avcontext->priv_data, "rc_buf_aggressivity", 1.0f, 0);
+     // Ratecontrol buffer size, in bits. Usually 0.5-1 second worth.
+     // 224 kbyte is what VLC uses, and it seems to fix the quantization pulse (at Level 5)
+@@ -589,17 +590,16 @@
      m_avpicture->quality = m_videoQMin;
  
  #ifdef USE_ORIG
--    m_avcontext->flags |= CODEC_FLAG_4MV;    // 4 motion vectors
-+    m_avcontext->flags |= AV_CODEC_FLAG_4MV;    // 4 motion vectors
+-    m_avcontext->flags |= CODEC_FLAG_PART;   // data partitioning
++    av_opt_set_int(m_avcontext->priv_data, "data_partitionin", 1, 0);
+     m_avcontext->flags |= CODEC_FLAG_4MV;    // 4 motion vectors
  #else
      m_avcontext->max_b_frames=0; /*don't use b frames*/
 -    m_avcontext->flags|=CODEC_FLAG_AC_PRED;
+-    m_avcontext->flags|=CODEC_FLAG_H263P_UMV;
 +    m_avcontext->flags|=AV_CODEC_FLAG_AC_PRED;
++    av_opt_set_int(m_avcontext->priv_data, "umv", 1, 0);
      /*c->flags|=CODEC_FLAG_QPEL;*/ /*don't enable this one: this forces profile_level to advanced simple profile */
 -    m_avcontext->flags|=CODEC_FLAG_4MV;
+-    m_avcontext->flags|=CODEC_FLAG_GMC;
 -    m_avcontext->flags|=CODEC_FLAG_LOOP_FILTER;
+-    m_avcontext->flags|=CODEC_FLAG_H263P_SLICE_STRUCT;
 +    m_avcontext->flags|=AV_CODEC_FLAG_4MV;
 +    m_avcontext->flags|=AV_CODEC_FLAG_LOOP_FILTER;
++    av_opt_set_int(m_avcontext->priv_data, "structured_slices", 1, 0);
  #endif
      m_avcontext->opaque = this;              // for use in RTP callback
  }
-@@ -607,6 +607,7 @@
- //
- void MPEG4EncoderContext::SetDynamicEncodingParams(bool restartOnResize) {
-+    char buf[1024];
-     // If no bitrate limit is set, max out at 3 mbit
-     // Use 75% of available bandwidth so not as many frames are dropped
-     unsigned bitRate
-@@ -661,7 +662,7 @@
+@@ -636,8 +636,8 @@
+     m_avcontext->qmax = std::min( m_avcontext->qmax, 31);
+     // Lagrange multipliers - this is how the context defaults do it:
+-    m_avcontext->lmin = m_avcontext->qmin * FF_QP2LAMBDA;
+-    m_avcontext->lmax = m_avcontext->qmax * FF_QP2LAMBDA;
++    av_opt_set_int(m_avcontext->priv_data, "lmin", m_avcontext->qmin * FF_QP2LAMBDA, 0);
++    av_opt_set_int(m_avcontext->priv_data, "lmax", m_avcontext->qmax * FF_QP2LAMBDA, 0);
+     // If framesize has changed or is not yet initialized, fix it up
+     if((unsigned)m_avcontext->width != m_frameWidth || (unsigned)m_avcontext->height != m_frameHeight) {
+@@ -665,7 +665,7 @@
      {
          delete[] m_rawFrameBuffer;
      }
@@ -1028,7 +730,7 @@ diff -ur opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/mpeg4.cxx opal-3.10.11/plug
  
      if (m_encFrameBuffer)
      {
-@@ -671,7 +672,7 @@
+@@ -675,7 +675,7 @@
      m_encFrameBuffer = new BYTE[m_encFrameLen];
  
      // Clear the back padding
@@ -1037,12 +739,93 @@ diff -ur opal-3.10.11.org/plugins/video/MPEG4-ffmpeg/mpeg4.cxx opal-3.10.11/plug
      const unsigned fsz = m_frameWidth * m_frameHeight;
      m_avpicture->data[0] = m_rawFrameBuffer;              // luminance
      m_avpicture->data[1] = m_rawFrameBuffer + fsz;        // first chroma channel
-@@ -1322,7 +1323,7 @@
+@@ -703,7 +703,7 @@
+     return false;
+   }
+-  if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(CODEC_ID_MPEG4)) == NULL){
++  if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(AV_CODEC_ID_MPEG4)) == NULL){
+     PTRACE(1, "MPEG4", "Encoder not found");
+     return false;
+   }
+@@ -713,13 +713,15 @@
+   if (PTRACE_CHECK(4)) {
+     m_avcontext->debug |= FF_DEBUG_RC;
+     m_avcontext->debug |= FF_DEBUG_PICT_INFO;
+-    m_avcontext->debug |= FF_DEBUG_MV;
++//    m_avcontext->debug |= FF_DEBUG_MV;
+   }
+ #endif
+   
+   SetStaticEncodingParams();
+   SetDynamicEncodingParams(false);    // don't force a restart, it's not open
+-  if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec) < 0)
++  AVDictionary *opts = NULL;
++  av_dict_set_int(&opts, "gmc", 1, 0);
++  if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec, &opts) < 0)
+   {
+     PTRACE(1, "MPEG4", "Encoder could not be opened");
+     return false;
+@@ -804,7 +806,7 @@
+         // Should the next frame be an I-Frame?
+         if ((flags & PluginCodec_CoderForceIFrame) || (m_frameNum == 0))
+         {
+-            m_avpicture->pict_type = FF_I_TYPE;
++            m_avpicture->pict_type = AV_PICTURE_TYPE_I;
+         }
+         else // No IFrame requested, let avcodec decide what to do
+         {
+@@ -1324,8 +1326,8 @@
  //
  
  void MPEG4DecoderContext::SetStaticDecodingParams() {
 -    m_avcontext->flags |= CODEC_FLAG_4MV; 
+-    m_avcontext->flags |= CODEC_FLAG_PART;
 +    m_avcontext->flags |= AV_CODEC_FLAG_4MV; 
++    av_opt_set_int(m_avcontext->priv_data, "data_partitionin", 1, 0);
      m_avcontext->workaround_bugs = 0; // no workaround for buggy implementations
  }
  
+@@ -1394,7 +1396,7 @@
+ bool MPEG4DecoderContext::OpenCodec()
+ {
+-    if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_MPEG4)) == NULL) {
++    if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_MPEG4)) == NULL) {
+         PTRACE(1, "MPEG4", "Decoder not found for encoder");
+         return false;
+     }
+@@ -1415,7 +1417,7 @@
+     SetStaticDecodingParams();
+     SetDynamicDecodingParams(false);    // don't force a restart, it's not open
+-    if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec) < 0) {
++    if (FFMPEGLibraryInstance.AvcodecOpen(m_avcontext, m_avcodec, NULL) < 0) {
+         PTRACE(1, "MPEG4", "Decoder failed to open");
+         return false;
+     }
+diff -ur opal-3.10.11.org/src/im/msrp.cxx opal-3.10.11/src/im/msrp.cxx
+--- opal-3.10.11.org/src/im/msrp.cxx   2013-08-15 01:22:57.000000000 +0200
++++ opal-3.10.11/src/im/msrp.cxx       2018-09-29 11:58:07.796456792 +0200
+@@ -835,7 +835,8 @@
+   flush();
+   {
+-    PStringStream str; str << ::setfill('\r') << mime.PrintContents(str);
++    PStringStream str; str << ::setfill('\r');
++    mime.PrintContents(str);
+     PTRACE(4, "Sending MSRP REPORT\n" << "MSRP " << chunkId << " " << MSRPCommands[REPORT] << CRLF 
+                                                  << "To-Path: " << toUrl << CRLF 
+                                                  << "From-Path: "<< fromUrl << CRLF 
+diff -ur opal-3.10.11.org/src/sip/sipep.cxx opal-3.10.11/src/sip/sipep.cxx
+--- opal-3.10.11.org/src/sip/sipep.cxx 2013-08-15 01:22:51.000000000 +0200
++++ opal-3.10.11/src/sip/sipep.cxx     2018-09-29 11:58:07.796456792 +0200
+@@ -471,7 +471,7 @@
+   if (!AddConnection(connection))
+     return false;
+-  if (remoteParty.Find(";OPAL-"OPAL_SIP_REFERRED_CONNECTION) == P_MAX_INDEX)
++  if (remoteParty.Find(";OPAL-" OPAL_SIP_REFERRED_CONNECTION) == P_MAX_INDEX)
+     otherConnection->Release(OpalConnection::EndedByCallForwarded);
+   else
+     otherConnection->SetPhase(OpalConnection::ForwardingPhase);
index ce2304010fae8e0e45ca0fd2dd493b6c3628fb90..468da570cae402f939dda047287a5fc6fd09dc98 100644 (file)
  
  PLUGIN        = ./ixj_lid_pwplugin.so
  
---- opal-3.10.11/plugins/video/common/mpi.cxx.orig     2017-07-12 19:15:10.396689138 +0000
-+++ opal-3.10.11/plugins/video/common/mpi.cxx  2017-07-12 19:18:02.036496397 +0000
-@@ -132,8 +132,8 @@
-   // to the desired one or matches it
-   for (i=0; i < MPIs.size(); i++) {
-     // we square the value in order to get absolute distances
--    distance = ( abs(MPIs[i].width  - desiredWidth ) *
--                 abs(MPIs[i].height - desiredHeight) );
-+    distance = ( abs((int)(MPIs[i].width  - desiredWidth) ) *
-+                 abs((int)(MPIs[i].height - desiredHeight) ) );
-     if (distance < minDistance) {
-       minDistance = distance;
index 516ad0b08e64fcb64e16511f4501ac5d7d4075bf..1420c99a3507f70d77df483a58cf672389c80bec 100644 (file)
--- a/opal.spec
+++ b/opal.spec
@@ -31,7 +31,7 @@ Summary:      Open Phone Abstraction Library (aka OpenH323 v2)
 Summary(pl.UTF-8):     Biblioteka Open Phone Abstraction Library (aka OpenH323 v2)
 Name:          opal
 Version:       3.10.11
-Release:       3
+Release:       4
 License:       MPL v1.0
 Group:         Libraries
 Source0:       http://downloads.sourceforge.net/opalvoip/%{name}-%{version}.tar.bz2
@@ -263,8 +263,6 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/theora_ptplugin.so
 %dir %{_libdir}/opal-%{version}/fax
 %attr(755,root,root) %{_libdir}/opal-%{version}/fax/spandsp_ptplugin.so
-%dir %{_libdir}/opal-%{version}/lid
-%attr(755,root,root) %{_libdir}/opal-%{version}/lid/ixj_lid_pwplugin.so
 %endif
 
 %if %{with vpb}
This page took 0.185684 seconds and 4 git commands to generate.