1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
diff -Naur opal-3.10.7.orig/plugins/video/H.263-1998/h263-1998.cxx opal-3.10.7/plugins/video/H.263-1998/h263-1998.cxx
--- opal-3.10.7.orig/plugins/video/H.263-1998/h263-1998.cxx 2012-08-23 04:18:42.000000000 +0200
+++ opal-3.10.7/plugins/video/H.263-1998/h263-1998.cxx 2012-09-11 21:22:27.429998081 +0200
@@ -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;
}
diff -Naur opal-3.10.7.orig/plugins/video/H.264/h264-x264.cxx opal-3.10.7/plugins/video/H.264/h264-x264.cxx
--- opal-3.10.7.orig/plugins/video/H.264/h264-x264.cxx 2012-08-23 04:18:41.000000000 +0200
+++ opal-3.10.7/plugins/video/H.264/h264-x264.cxx 2012-09-11 21:25:33.654998816 +0200
@@ -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;
diff -Naur opal-3.10.7.orig/plugins/video/MPEG4-ffmpeg/mpeg4.cxx opal-3.10.7/plugins/video/MPEG4-ffmpeg/mpeg4.cxx
--- opal-3.10.7.orig/plugins/video/MPEG4-ffmpeg/mpeg4.cxx 2012-08-23 04:18:44.000000000 +0200
+++ opal-3.10.7/plugins/video/MPEG4-ffmpeg/mpeg4.cxx 2012-09-11 21:33:10.256012246 +0200
@@ -589,17 +589,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 +804,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 +1325,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
}
diff -Naur opal-3.10.7.orig/plugins/video/common/ffmpeg.h opal-3.10.7/plugins/video/common/ffmpeg.h
--- opal-3.10.7.orig/plugins/video/common/ffmpeg.h 2012-08-23 04:18:43.000000000 +0200
+++ opal-3.10.7/plugins/video/common/ffmpeg.h 2012-09-11 21:29:08.505015076 +0200
@@ -46,6 +46,7 @@
#include "platform.h"
#include "libavcodec/avcodec.h"
+#include <libavutil/opt.h>
// AVPacket was declared in avformat.h before April 2009
#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 25, 0)
#include "libavformat/avformat.h"
|