Date: Fri, 4 Nov 2016 10:47:58 +0000 (UTC) From: Jan Beich <jbeich@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r425312 - in branches/2016Q4/multimedia/bombono: . files Message-ID: <201611041047.uA4AlwvL083246@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jbeich Date: Fri Nov 4 10:47:58 2016 New Revision: 425312 URL: https://svnweb.freebsd.org/changeset/ports/425312 Log: MFH: r425311 multimedia/bombono: unbreak build with ffmpeg 3.x src/mgui/ffviewer.cpp:642:22: error: 'SWS_CPU_CAPS_MMX' was not declared in this scope sws_flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2; ^ src/mgui/ffviewer.cpp:642:39: error: 'SWS_CPU_CAPS_MMX2' was not declared in this scope sws_flags |= SWS_CPU_CAPS_MMX|SWS_CPU_CAPS_MMX2; ^ src/mgui/ffviewer.cpp:650:9: error: 'PixelFormat' was not declared in this scope PixelFormat dst_pf = PIX_FMT_BGR24; // PIX_FMT_RGB24; ^ src/mgui/ffviewer.cpp:650:21: error: expected ';' before 'dst_pf' PixelFormat dst_pf = PIX_FMT_BGR24; // PIX_FMT_RGB24; ^ src/mgui/ffviewer.cpp:652:13: error: 'dst_pf' was not declared in this scope dst_pf, sws_flags, 0, 0, 0); ^ src/mgui/ffviewer.cpp:657:45: error: 'avcodec_get_frame_defaults' was not declared in this scope avcodec_get_frame_defaults(&rgbFrame); // не помешает ^ PR: 207547 Obtained from: upstream Approved by: ports-secteam blanket Modified: branches/2016Q4/multimedia/bombono/Makefile branches/2016Q4/multimedia/bombono/files/patch-src_mgui_ffviewer.cpp Directory Properties: branches/2016Q4/ (props changed) Modified: branches/2016Q4/multimedia/bombono/Makefile ============================================================================== --- branches/2016Q4/multimedia/bombono/Makefile Fri Nov 4 10:45:19 2016 (r425311) +++ branches/2016Q4/multimedia/bombono/Makefile Fri Nov 4 10:47:58 2016 (r425312) @@ -3,7 +3,7 @@ PORTNAME= bombono PORTVERSION= 1.2.2 -PORTREVISION= 7 +PORTREVISION= 8 CATEGORIES= multimedia MASTER_SITES= SF/${PORTNAME}/${PORTNAME}-dvd/${PORTVERSION:R} DISTNAME= ${PORTNAME}-dvd-${PORTVERSION} Modified: branches/2016Q4/multimedia/bombono/files/patch-src_mgui_ffviewer.cpp ============================================================================== --- branches/2016Q4/multimedia/bombono/files/patch-src_mgui_ffviewer.cpp Fri Nov 4 10:45:19 2016 (r425311) +++ branches/2016Q4/multimedia/bombono/files/patch-src_mgui_ffviewer.cpp Fri Nov 4 10:47:58 2016 (r425312) @@ -1,24 +1,134 @@ +https://github.com/muravjov/bombono-dvd/commit/282273b8a581 +https://github.com/muravjov/bombono-dvd/commit/2d72b907a81a +https://github.com/muravjov/bombono-dvd/commit/11f8b5a9cb2f + --- src/mgui/ffviewer.cpp.orig 2013-03-07 21:20:45 UTC +++ src/mgui/ffviewer.cpp -@@ -406,7 +406,7 @@ static std::string CodecID2Str(CodecID c +@@ -48,6 +48,18 @@ C_LINKAGE_BEGIN + C_LINKAGE_END + #endif + ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,05,00) ++C_LINKAGE_BEGIN ++#include <libavutil/imgutils.h> ++C_LINKAGE_END ++static int bmd_avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height) ++{ ++ return av_image_get_buffer_size(pix_fmt, width, height, 1); ++} ++#else ++#define bmd_avpicture_get_size avpicture_get_size ++#endif ++ + // Прямой доступ к ff_codec_bmp_tags, в частности, закрыл, некий + // Anton Khirnov, см. libavformat/libavformat.v (из него генерится скрипт + // для опции --version-script=<script_file> линковщика ld) +@@ -406,7 +418,11 @@ static std::string CodecID2Str(CodecID codec_id) #else // CALC_FF_TAG -static std::string CodecID2Str(CodecID codec_id) ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,00,00) ++//#define CodecID AVCodecID ++#endif ++ +static std::string CodecID2Str(AVCodecID codec_id) { return Int2Str(codec_id); } -@@ -1119,8 +1119,10 @@ static bool SeekSetTime(FFViewer& ffv, d +@@ -617,6 +633,17 @@ FFInfo::~FFInfo() + CloseInfo(*this); + } + ++static int bmd_avpicture_fill(AVFrame *picture, const uint8_t *ptr, ++ AVPixelFormat pix_fmt, int width, int height) ++{ ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,5,00) ++ return av_image_fill_arrays(picture->data, picture->linesize, ++ ptr, pix_fmt, width, height, 1); ++#else ++ return avpicture_fill((AVPicture*)picture, ptr, pix_fmt, width, height); ++#endif ++} ++ + bool FFViewer::Open(const char* fname, std::string& err_str) + { + // * закрываем открытое ранее +@@ -635,11 +662,14 @@ bool FFViewer::Open(const char* fname, std::string& err_str) + // opt_default(); // обновление sws_opts по -sws_flags + // sws_flags = av_get_int(sws_opts, "sws_flags", NULL); // = sws_opts.flags + int sws_flags = SWS_BICUBIC; ++ ++#if !(LIBSWSCALE_VERSION_INT >= AV_VERSION_INT(3,0,0)) + // при сборке с --enable-runtime-cpudetect (появилось после 0.5), который полюбили пакетировщики, + // лучшая оптимизация выбирается на этапе выполнения, а не сборке; однако для 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; ++#endif + + // :TRICKY: почему-то ffmpeg'у "нравится" BGR24 и не нравиться RGB24 в плане использования + // MMX (ускорения); цена по времени неизвестна,- используем только ради того, чтобы не было +@@ -647,15 +677,27 @@ bool FFViewer::Open(const char* fname, std::string& err_str) + // Другой вариант - PIX_FMT_RGB32, но там зависимый порядок байтов (в GdkPixbuf - нет) и + // мы нацелены на RGB24 + // :TODO: с версии LIBSWSCALE_VERSION_INT >= 0.8.11 появился прямой yuv -> rgb24, поправить ++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(54,17,00) ++ AVPixelFormat dst_pf = AV_PIX_FMT_BGR24; // AV_PIX_FMT_RGB24; ++#else + PixelFormat dst_pf = PIX_FMT_BGR24; // PIX_FMT_RGB24; ++#endif ++ + 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(bmd_avpicture_get_size(dst_pf, dst_sz.x, dst_sz.y) * sizeof(uint8_t)); ++ ++ // не помешает ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(56,35,01) ++ av_frame_unref(&rgbFrame); ++#else ++ avcodec_get_frame_defaults(&rgbFrame); ++#endif ++ ++ bmd_avpicture_fill(&rgbFrame, rgbBuf, dst_pf, dst_sz.x, dst_sz.y); + } + else + // защита от неполных открытий +@@ -841,7 +883,11 @@ static bool DoDecode(FFViewer& ffv) + + DoVideoDecode(ffv, got_picture, &pkt); + } ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,8,00) ++ av_packet_unref(&pkt); ++#else + av_free_packet(&pkt); ++#endif + } + else if( av_res == (int)AVERROR_EOF ) // для mpegts также -EIO приходит + { +@@ -1119,8 +1165,18 @@ static bool SeekSetTime(FFViewer& ffv, double time) { bool seek_ok = TimeSeek(ffv, start_time, time); if( !seek_ok && CanByteSeek(ffv.iCtx) ) -- // тогда переходим в начало файла ++ { + // тогда переходим в начало файла - seek_ok = DoSeek(ffv, ffv.iCtx->data_offset, true); -+ // then seek to the file's start; since data_offset is private -+ // now, if we seek to 0 and there is a data_offset our seek will -+ // be rounded to the minimum possible, i.e. data_offset. -+ seek_ok = DoSeek(ffv, /* ffv.iCtx->data_offset */ 0, true); ++#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(56,11,00) ++ // автор 9deaec782810d098bca11c9332fab2d2f4c5fb78 уверяет, что ++ // сокрытие AVFormatContext.internal в internal.h - это нормально ++ //int64_t data_offset = ffv.iCtx->internal->data_offset; ++ int64_t data_offset = 0; ++#else ++ int64_t data_offset = ffv.iCtx->data_offset; ++#endif ++ seek_ok = DoSeek(ffv, data_offset, true); ++ } // некоторое видео глючит в начале (Hellboy), из-за чего // последовательный доступ выполняется с перескоками -
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611041047.uA4AlwvL083246>