Author: krejzi
Date: 2012-11-27 13:09:47 -0700 (Tue, 27 Nov 2012)
New Revision: 2559
Added:
trunk/opal/opal-3.10.9-ffmpeg-1.patch
Log:
Opal FFmpeg Patch
Added: trunk/opal/opal-3.10.9-ffmpeg-1.patch
===================================================================
--- trunk/opal/opal-3.10.9-ffmpeg-1.patch (rev 0)
+++ trunk/opal/opal-3.10.9-ffmpeg-1.patch 2012-11-27 20:09:47 UTC (rev
2559)
@@ -0,0 +1,194 @@
+Submitted By: Armin K. <krejzi at email dot com>
+Date: 2012-11-27
+Initial Package Version: 3.10.9
+Upstream Status: Unknown
+Origin: Archlinux
+Description: Fixes building with recent versions of FFmpeg. This
is improved version of the
+ original 3.10.7 patch since it contains build fixes
when x264 is present.
+
+--- opal.orig/plugins/video/H.263-1998/h263-1998.cxx 2012-11-26
11:48:25.000000000 +0100
++++ opal/plugins/video/H.263-1998/h263-1998.cxx 2012-11-27
20:57:55.871909189 +0100
+@@ -48,6 +48,7 @@
+ #endif
+
+ #include "h263-1998.h"
++#include <libavutil/opt.h>
+ #include <limits>
+ #include <iomanip>
+ #include <stdio.h>
+@@ -317,9 +318,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 +329,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
+@@ -360,9 +361,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 +371,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;
+ }
+
+@@ -450,15 +451,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 +513,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 +595,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;
++ 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;
+ }
+--- opal.orig/plugins/video/H.264/gpl/h264_helper.cxx 2012-11-26
11:48:23.000000000 +0100
++++ opal/plugins/video/H.264/gpl/h264_helper.cxx 2012-11-27
20:53:47.462736294 +0100
+@@ -27,6 +27,7 @@
+ #include <fstream>
+ #include <stdlib.h>
+ #include <sys/stat.h>
++#include <unistd.h>
+
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+--- opal.orig/plugins/video/H.264/h264-x264.cxx 2012-11-26
11:48:24.000000000 +0100
++++ opal/plugins/video/H.264/h264-x264.cxx 2012-11-27 20:53:47.462736294
+0100
+@@ -1071,13 +1071,10 @@
+ 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 = CODEC_FLAG2_DROP_FRAME_TIMECODE |
+ CODEC_FLAG2_SKIP_RD |
+ CODEC_FLAG2_CHUNKS;
+
+--- opal.orig/plugins/video/H.264/shared/x264wrap.cxx 2012-11-26
11:48:24.000000000 +0100
++++ opal/plugins/video/H.264/shared/x264wrap.cxx 2012-11-27
20:53:47.462736294 +0100
+@@ -33,6 +33,7 @@
+
+ #include <codec/opalplugin.hpp>
+ #include <stdio.h>
++#include <unistd.h>
+
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+--- opal.orig/plugins/video/MPEG4-ffmpeg/mpeg4.cxx 2012-11-26
11:48:28.000000000 +0100
++++ opal/plugins/video/MPEG4-ffmpeg/mpeg4.cxx 2012-11-27 20:58:37.031590064
+0100
+@@ -103,6 +103,7 @@
+
+ #else /* LIBAVCODEC_HAVE_SOURCE_DIR */
+ #include "../common/ffmpeg.h"
++#include <libavutil/opt.h>
+ #endif /* LIBAVCODEC_HAVE_SOURCE_DIR */
+ }
+
+@@ -589,17 +590,17 @@
+ m_avpicture->quality = m_videoQMin;
+
+ #ifdef USE_ORIG
+- 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;
++ 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;
++ av_opt_set_int(m_avcontext->priv_data, "structured_slices", 1, 0);
+ #endif
+ m_avcontext->opaque = this; // for use in RTP callback
+ }
+@@ -804,7 +805,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 +1326,7 @@
+
+ void MPEG4DecoderContext::SetStaticDecodingParams() {
+ m_avcontext->flags |= CODEC_FLAG_4MV;
+- m_avcontext->flags |= CODEC_FLAG_PART;
++ av_opt_set_int(m_avcontext->priv_data, "data_partitionin", 1, 0);
+ m_avcontext->workaround_bugs = 0; // no workaround for buggy
implementations
+ }
+
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page