summarylogtreecommitdiffstats
path: root/fix_ffmpeg30.patch
diff options
context:
space:
mode:
authorBehnam Momeni2016-03-12 10:55:11 +0330
committerBehnam Momeni2016-03-12 10:55:11 +0330
commit3d9dedf666f0cdf9ac53294b0e93fc18193977db (patch)
tree2c88485c92daf51fc2318409b26a4b78d7cfc58f /fix_ffmpeg30.patch
parent6cfd50541b651b902ca3c79f21ac2080f6962de1 (diff)
downloadaur-3d9dedf666f0cdf9ac53294b0e93fc18193977db.tar.gz
Patching codes to compile with the ffmpeg 3.0
Diffstat (limited to 'fix_ffmpeg30.patch')
-rw-r--r--fix_ffmpeg30.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/fix_ffmpeg30.patch b/fix_ffmpeg30.patch
new file mode 100644
index 00000000000..0d8367df57c
--- /dev/null
+++ b/fix_ffmpeg30.patch
@@ -0,0 +1,68 @@
+diff -ruN bombono-dvd-1.2.2.orig/src/mgui/ffviewer.cpp bombono-dvd-1.2.2/src/mgui/ffviewer.cpp
+--- bombono-dvd-1.2.2.orig/src/mgui/ffviewer.cpp 2016-03-12 08:58:15.027051299 +0330
++++ bombono-dvd-1.2.2/src/mgui/ffviewer.cpp 2016-03-12 10:47:50.869987067 +0330
+@@ -36,6 +36,10 @@
+ #define AVFORMAT_54
+ #endif
+
++C_LINKAGE_BEGIN
++#include <libavutil/imgutils.h>
++C_LINKAGE_END
++
+ // разрабы libav считают себя самыми умными и потому решили
+ // закрыть простым смертным доступ к ffurl_register_protocol()
+ // (бывшая av_register_protocol2()),- https://bugzilla.libav.org/show_bug.cgi?id=224
+@@ -639,7 +643,9 @@
+ // лучшая оптимизация выбирается на этапе выполнения, а не сборке; однако для 0.6 времени
+ // maverick оно еще не доделано, см. http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=1&t=1185
+ // :KLUDGE: потому добавляем явно
+- sws_flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2;
++
++ // CPU_CAPS are now auto-detected
++ //sws_flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2;
+
+ // :TRICKY: почему-то ffmpeg'у "нравится" BGR24 и не нравиться RGB24 в плане использования
+ // MMX (ускорения); цена по времени неизвестна,- используем только ради того, чтобы не было
+@@ -647,15 +653,16 @@
+ // Другой вариант - PIX_FMT_RGB32, но там зависимый порядок байтов (в GdkPixbuf - нет) и
+ // мы нацелены на RGB24
+ // :TODO: с версии LIBSWSCALE_VERSION_INT >= 0.8.11 появился прямой yuv -> rgb24, поправить
+- PixelFormat dst_pf = PIX_FMT_BGR24; // PIX_FMT_RGB24;
++ AVPixelFormat dst_pf = AV_PIX_FMT_BGR24; // PIX_FMT_RGB24;
+ rgbCnvCtx = sws_getContext(sz.x, sz.y, GetVideoCtx(*this)->pix_fmt, sz.x, sz.y,
+ dst_pf, sws_flags, 0, 0, 0);
+ ASSERT( rgbCnvCtx );
+
+ Point dst_sz(sz);
+- rgbBuf = (uint8_t*)av_malloc(avpicture_get_size(dst_pf, dst_sz.x, dst_sz.y) * sizeof(uint8_t));
+- avcodec_get_frame_defaults(&rgbFrame); // не помешает
+- avpicture_fill((AVPicture*)&rgbFrame, rgbBuf, dst_pf, dst_sz.x, dst_sz.y);
++ rgbBuf = (uint8_t*)av_malloc (av_image_get_buffer_size (dst_pf, dst_sz.x, dst_sz.y, 1));
++ av_frame_unref (&rgbFrame);
++ av_image_fill_arrays (rgbFrame.data, rgbFrame.linesize,
++ rgbBuf, dst_pf, dst_sz.x, dst_sz.y, 1);
+ }
+ else
+ // защита от неполных открытий
+@@ -765,7 +772,7 @@
+ #ifdef AVFRAME_INIT_CHANGE
+ // avcodec_get_frame_defaults() перенесли в avcodec_decode_video2()
+ #else
+- avcodec_get_frame_defaults(&picture); // ffmpeg.c очищает каждый раз
++ av_frame_unref (&picture);
+ #endif
+
+ #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,25,00)
+@@ -841,7 +848,11 @@
+
+ DoVideoDecode(ffv, got_picture, &pkt);
+ }
+- av_free_packet(&pkt);
++ if (pkt.buf)
++ av_buffer_unref (&pkt.buf);
++ pkt.data = nullptr;
++ pkt.size = 0;
++ av_packet_free_side_data (&pkt);
+ }
+ else if( av_res == (int)AVERROR_EOF ) // для mpegts также -EIO приходит
+ {