From 3726e50ed50c26a5002aedafed8d5c9f80fc8ab9 Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Thu, 22 Sep 2016 21:03:45 +0200 Subject: [PATCH] hedgewars: fix build with ffmpeg>=3.0 (via Debian) --- srcpkgs/hedgewars/patches/ffmpeg3.patch | 76 +++++++++++++++++++++++++ srcpkgs/hedgewars/template | 14 ++--- 2 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 srcpkgs/hedgewars/patches/ffmpeg3.patch diff --git a/srcpkgs/hedgewars/patches/ffmpeg3.patch b/srcpkgs/hedgewars/patches/ffmpeg3.patch new file mode 100644 index 00000000000..656bda7140b --- /dev/null +++ b/srcpkgs/hedgewars/patches/ffmpeg3.patch @@ -0,0 +1,76 @@ +Description: Replace deprecated FFmpeg API +Author: Andreas Cadhalpun +Last-Update: <2015-11-02> + +--- QTfrontend/util/LibavInteraction.cpp ++++ QTfrontend/util/LibavInteraction.cpp +@@ -106,8 +106,8 @@ LibavInteraction::LibavInteraction() : Q + if (!pCodec->pix_fmts) + continue; + bool yuv420Supported = false; +- for (const PixelFormat* pfmt = pCodec->pix_fmts; *pfmt != -1; pfmt++) +- if (*pfmt == PIX_FMT_YUV420P) ++ for (const AVPixelFormat* pfmt = pCodec->pix_fmts; *pfmt != -1; pfmt++) ++ if (*pfmt == AV_PIX_FMT_YUV420P) + { + yuv420Supported = true; + break; +--- hedgewars/avwrapper/avwrapper.c ++++ hedgewars/avwrapper/avwrapper.c +@@ -158,7 +158,7 @@ static void AddAudioStream() + else + g_NumSamples = g_pAudio->frame_size; + g_pSamples = (int16_t*)av_malloc(g_NumSamples*g_Channels*sizeof(int16_t)); +- g_pAFrame = avcodec_alloc_frame(); ++ g_pAFrame = av_frame_alloc(); + if (!g_pAFrame) + { + Log("Could not allocate frame\n"); +@@ -241,7 +241,7 @@ static int AddVideoStream() + g_pVideo->time_base.den = g_Framerate.num; + g_pVideo->time_base.num = g_Framerate.den; + //g_pVideo->gop_size = 12; /* emit one intra frame every twelve frames at most */ +- g_pVideo->pix_fmt = PIX_FMT_YUV420P; ++ g_pVideo->pix_fmt = AV_PIX_FMT_YUV420P; + + // set quality + if (g_VQuality > 100) +@@ -299,7 +299,7 @@ static int AddVideoStream() + #endif + return FatalError("Could not open video codec %s", g_pVCodec->long_name); + +- g_pVFrame = avcodec_alloc_frame(); ++ g_pVFrame = av_frame_alloc(); + if (!g_pVFrame) + return FatalError("Could not allocate frame"); + +@@ -317,10 +317,10 @@ static int WriteFrame(AVFrame* pFrame) + // write interleaved audio frame + if (g_pAStream) + { +- VideoTime = (double)g_pVStream->pts.val*g_pVStream->time_base.num/g_pVStream->time_base.den; ++ VideoTime = (double)av_stream_get_end_pts(g_pVStream)*g_pVStream->time_base.num/g_pVStream->time_base.den; + do + { +- AudioTime = (double)g_pAStream->pts.val*g_pAStream->time_base.num/g_pAStream->time_base.den; ++ AudioTime = (double)av_stream_get_end_pts(g_pAStream)*g_pAStream->time_base.num/g_pAStream->time_base.den; + ret = WriteAudioFrame(); + } + while (AudioTime < VideoTime && ret); +@@ -526,14 +526,14 @@ AVWRAP_DECL int AVWrapper_Close() + avcodec_close(g_pVideo); + av_free(g_pVideo); + av_free(g_pVStream); +- av_free(g_pVFrame); ++ av_frame_free(&g_pVFrame); + } + if (g_pAStream) + { + avcodec_close(g_pAudio); + av_free(g_pAudio); + av_free(g_pAStream); +- av_free(g_pAFrame); ++ av_frame_free(&g_pAFrame); + av_free(g_pSamples); + fclose(g_pSoundFile); + } diff --git a/srcpkgs/hedgewars/template b/srcpkgs/hedgewars/template index ed4ed646c4d..b62c911e2a6 100644 --- a/srcpkgs/hedgewars/template +++ b/srcpkgs/hedgewars/template @@ -1,19 +1,15 @@ -broken="ffmpeg 3.0" - # Template file for 'hedgewars' pkgname=hedgewars version=0.9.22 revision=3 wrksrc="${pkgname}-src-${version}" build_style=cmake -configure_args=" - -DNOSERVER=1 - -DDATA_INSTALL_DIR=/usr/share/${pkgname} - -DPHYSFS_SYSTEM=1 -" +configure_args="-DNOSERVER=1 -DDATA_INSTALL_DIR=/usr/share/${pkgname} + -DPHYSFS_SYSTEM=1 -DCMAKE_VERBOSE_MAKEFILE=1 -DMINIMAL_FLAGS=1" hostmakedepends="lua51 pkg-config fpc qt-qmake" -makedepends="qt-devel SDL_net-devel SDL_mixer-devel SDL_image-devel SDL_ttf-devel lua51-devel physfs-devel libpng-devel ffmpeg-devel libfreeglut-devel" -depends="dejavu-fonts-ttf hedgewars-data libfreeglut" +makedepends="qt-devel SDL_net-devel SDL_mixer-devel SDL_image-devel SDL_ttf-devel + lua51-devel physfs-devel libpng-devel ffmpeg-devel libfreeglut-devel" +depends="hedgewars-data>=${version}_${revision} libfreeglut" short_desc="Funny turn-based artillery game, featuring fighting Hedgehogs!" maintainer="Jakub Skrzypnik " license="GPL-2"