From 9aaa1586a3b67e7211e2c54424f9fec0ebb22b3a Mon Sep 17 00:00:00 2001 From: Alexis Ballier Date: Mon, 5 Dec 2016 11:19:40 +0100 Subject: media-video/ffdiaporama: fix build with ffmpeg-3. Patch by charlot in bug #575058. Package-Manager: portage-2.3.2 --- media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild | 4 +- .../files/ffdiaporama-2.1-ffmpeg-3.0.patch | 196 +++++++++++++++++++++ 2 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 media-video/ffdiaporama/files/ffdiaporama-2.1-ffmpeg-3.0.patch (limited to 'media-video') diff --git a/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild b/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild index e935fdc1e92a..cb539a989c42 100644 --- a/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild +++ b/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2015 Gentoo Foundation +# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ @@ -39,7 +39,7 @@ RDEPEND=" DEPEND="${RDEPEND}" DOCS=( authors.txt ) -PATCHES=( "${FILESDIR}"/${P}-{ffmpeg-2.4,libav10}.patch ) +PATCHES=( "${FILESDIR}"/${P}-{ffmpeg-2.4,libav10,ffmpeg-3.0}.patch ) S="${WORKDIR}/ffDiaporama" diff --git a/media-video/ffdiaporama/files/ffdiaporama-2.1-ffmpeg-3.0.patch b/media-video/ffdiaporama/files/ffdiaporama-2.1-ffmpeg-3.0.patch new file mode 100644 index 000000000000..4eb8c9704235 --- /dev/null +++ b/media-video/ffdiaporama/files/ffdiaporama-2.1-ffmpeg-3.0.patch @@ -0,0 +1,196 @@ +--- src/ffDiaporama/engine/cBaseMediaFile.cpp 2014-02-09 10:48:04.000000000 +0100 ++++ src/ffDiaporama/engine/cBaseMediaFile.cpp 2016-02-21 19:00:43.129114600 +0100 +@@ -113,10 +113,23 @@ + #define VC_USERDATA 0x00000008 + #define VC_FLUSHED 0x00000010 + +-#define PIXFMT PIX_FMT_RGB24 ++#if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ #define PIXELFORMAT AVPixelFormat ++ #define PIXFMT AV_PIX_FMT_RGB24 ++#else ++ #define PIXELFORMAT PixelFormat ++ #define PIXFMT PIX_FMT_RGB24 ++#endif + #define QTPIXFMT QImage::Format_RGB888 + +-AVFrame *ALLOCFRAME() { return avcodec_alloc_frame(); } ++AVFrame *ALLOCFRAME() { return ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ av_frame_alloc(); ++ #else ++ avcodec_alloc_frame(); ++ #endif ++} ++ + void FREEFRAME(AVFrame **Buf){ avcodec_free_frame(Buf); *Buf=NULL; } + + //**************************************************************************************************************************************************************** +@@ -2402,7 +2415,7 @@ + AVFrame *FrameRGB=ALLOCFRAME(); + if ((FrameRGB)&&(!Thumbnail.isNull())) { + avpicture_fill((AVPicture *)FrameRGB,Thumbnail.bits(),PIXFMT,RealW,RealH); +- struct SwsContext *img_convert_ctx=sws_getContext(FrameYUV->width,FrameYUV->height,(PixelFormat)FrameYUV->format,RealW,RealH,PIXFMT,SWS_FAST_BILINEAR,NULL,NULL,NULL); ++ struct SwsContext *img_convert_ctx=sws_getContext(FrameYUV->width,FrameYUV->height,(PIXELFORMAT)FrameYUV->format,RealW,RealH,PIXFMT,SWS_FAST_BILINEAR,NULL,NULL,NULL); + if (img_convert_ctx!=NULL) { + int ret = sws_scale(img_convert_ctx,FrameYUV->data,FrameYUV->linesize,0,FrameYUV->height,FrameRGB->data,FrameRGB->linesize); + if (ret>0) { +@@ -3482,7 +3495,7 @@ + struct SwsContext *img_convert_ctx=sws_getContext( + Frame->width, // Src width + Frame->height, // Src height +- (PixelFormat)Frame->format, // Src Format ++ (PIXELFORMAT)Frame->format, // Src Format + W, // Destination width + H, // Destination height + PIXFMT, // Destination Format +--- src/ffDiaporama/engine/cDeviceModelDef.h 2016-02-21 19:53:00.487286000 +0100 ++++ src/ffDiaporama/engine/cDeviceModelDef.h 2016-02-21 19:52:47.623287800 +0100 +@@ -53,7 +53,9 @@ + + #include + #include +-#include ++#if (LIBAVUTIL_VERSION_INT ++#endif + + #include + +@@ -90,10 +92,10 @@ + #define RESAMPLE_MAX_CHANNELS 32 + #endif + +- #include "libavfilter/avcodec.h" +- #include "libavfilter/buffersink.h" +- #include "libavfilter/buffersrc.h" +- #if ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,48,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,39,100))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,19,104))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,5,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,90,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,5,101))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,17,104))) ++ #if ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(55,17,103))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(57,24,102))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(57,25,100))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(57,0,101))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(6,31,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(4,0,100))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(2,0,101))) ++ #define FFMPEGVERSIONINT 300 ++ #define FFMPEGVERSION "FFmpeg 3.0 or higher" ++ #elif ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,48,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,39,100))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,19,104))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,5,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,90,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,5,101))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,17,104))) + #define FFMPEGVERSIONINT 210 + #define FFMPEGVERSION "FFmpeg 2.1 or higher" + #elif ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,38,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,18,102))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,12,100))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,3,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,79,101))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,3,100))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,17,102))) +@@ -108,6 +110,13 @@ + #else + // unsupported version + #endif ++ #if (FFMPEGVERSIONINT<300) ++ #include "libavfilter/avcodec.h" ++ #else ++ #include "libavcodec/avcodec.h" ++ #endif ++ #include "libavfilter/buffersink.h" ++ #include "libavfilter/buffersrc.h" + #endif + } + +--- src/ffDiaporama/engine/_EncodeVideo.cpp 2016-02-22 08:19:13.935794200 +0100 ++++ src/ffDiaporama/engine/_EncodeVideo.cpp 2016-02-22 08:33:52.928215900 +0100 +@@ -20,7 +20,11 @@ + + #include "_EncodeVideo.h" + +-#define PIXFMT PIX_FMT_RGB24 ++#if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ #define PIXFMT AV_PIX_FMT_RGB24 ++#else ++ #define PIXFMT PIX_FMT_RGB24 ++#endif + #define QTPIXFMT QImage::Format_RGB888 + + //************************************************************************************************************************************************* +@@ -410,8 +414,13 @@ + // Setup codec parameters + VideoStream->codec->width =ImageWidth; + VideoStream->codec->height =ImageHeight; ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ VideoStream->codec->pix_fmt =AV_PIX_FMT_YUV420P; ++ #else + VideoStream->codec->pix_fmt =PIX_FMT_YUV420P; ++ #endif + VideoStream->codec->time_base =VideoFrameRate; ++ VideoStream->time_base =VideoFrameRate; + VideoStream->codec->sample_aspect_ratio =PixelAspectRatio; + VideoStream->sample_aspect_ratio =PixelAspectRatio; + if ((codec->id!=AV_CODEC_ID_H264)||(!VBR)) { +@@ -434,7 +443,11 @@ + + } else if (codec->id==AV_CODEC_ID_MJPEG) { + //-qscale 2 -qmin 2 -qmax 2 ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ VideoStream->codec->pix_fmt =AV_PIX_FMT_YUVJ420P; ++ #else + VideoStream->codec->pix_fmt =PIX_FMT_YUVJ420P; ++ #endif + VideoStream->codec->qmin =2; + VideoStream->codec->qmax =2; + VideoStream->codec->bit_rate_tolerance =(ImageWidth*ImageHeight*2*VideoFrameRate.den/VideoFrameRate.num)*2; +@@ -564,7 +577,11 @@ + #endif + + // Create and prepare VideoFrame and VideoFrameBuf +- VideoFrame=avcodec_alloc_frame(); // Allocate structure for RGB image ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ VideoFrame=av_frame_alloc(); ++ #else ++ VideoFrame=avcodec_alloc_frame(); ++ #endif + if (!VideoFrame) { + ToLog(LOGMSG_CRITICAL,"EncodeVideo-OpenVideoStream: avcodec_alloc_frame() failed"); + return false; +@@ -654,7 +671,11 @@ + return false; + } + ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ AudioFrame=av_frame_alloc(); ++ #else + AudioFrame=avcodec_alloc_frame(); ++ #endif + if (AudioFrame==NULL) { + ToLog(LOGMSG_CRITICAL,QString("EncodeVideo-OpenAudioStream:: avcodec_alloc_frame failed")); + return false; +@@ -1095,7 +1116,11 @@ + if (Continue) { + // Init AudioFrame + AVRational AVR; ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ av_frame_unref(AudioFrame); ++ #else + avcodec_get_frame_defaults(AudioFrame); ++ #endif + AVR.num =1; + AVR.den =AudioStream->codec->sample_rate; + AudioFrame->nb_samples =DestPacketSize/DestSampleSize; +@@ -1180,7 +1205,11 @@ + int errcode; + + if (Image) { +- avcodec_get_frame_defaults(VideoFrame); ++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300)) ++ av_frame_unref(AudioFrame); ++ #else ++ avcodec_get_frame_defaults(AudioFrame); ++ #endif + if (avpicture_fill( + (AVPicture *)VideoFrame, // Frame to prepare + VideoFrameBuf, // Buffer which will contain the image data +@@ -1225,9 +1254,14 @@ + } + } + +- if ((VideoFrameNbr%VideoStream->codec->gop_size)==0) VideoFrame->pict_type=AV_PICTURE_TYPE_I; +- else VideoFrame->pict_type=(AVPictureType)0; ++ if ((VideoFrameNbr%VideoStream->codec->gop_size)==0) ++ VideoFrame->pict_type=AV_PICTURE_TYPE_I; ++ else ++ VideoFrame->pict_type=(AVPictureType)0; + VideoFrame->pts=VideoFrameNbr; ++ VideoFrame->format=VideoStream->codec->pix_fmt; ++ VideoFrame->width=VideoStream->codec->width; ++ VideoFrame->height=VideoStream->codec->height; + + if ((Continue)&&(!StopProcessWanted)) { + -- cgit v1.2.3-65-gdbad