summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Ospald <hasufell@gentoo.org>2015-08-09 17:24:33 +0200
committerJulian Ospald <hasufell@gentoo.org>2015-08-09 17:25:17 +0200
commit8a9e0d101236da1e1f3ae74df35976c7e03f2b3f (patch)
tree5355c2b30e529c31b7e0ad43e932bbe1d5df63d4 /media-video/ffdiaporama
parentdev-vcs/rcs: ia64 stable wrt bug #555838 (diff)
downloadgentoo-8a9e0d101236da1e1f3ae74df35976c7e03f2b3f.tar.gz
gentoo-8a9e0d101236da1e1f3ae74df35976c7e03f2b3f.tar.bz2
gentoo-8a9e0d101236da1e1f3ae74df35976c7e03f2b3f.zip
media-video/ffdiaporama: fix compilation with libav-10
Suggested-by: Olivier Laurantin X-Gentoo-Bug: 526434 X-Gentoo-Bug-url: https://bugs.gentoo.org/show_bug.cgi?id=526434
Diffstat (limited to 'media-video/ffdiaporama')
-rw-r--r--media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild78
-rw-r--r--media-video/ffdiaporama/files/ffdiaporama-2.1-libav10.patch427
2 files changed, 505 insertions, 0 deletions
diff --git a/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild b/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild
new file mode 100644
index 000000000000..9adc79fd78a4
--- /dev/null
+++ b/media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+inherit eutils fdo-mime gnome2-utils qt4-r2
+
+BIN_PV=${PV}.2014.0209
+RSC_PV=${PV}.2014.0209
+TMT_PV=1.0.2014.0125
+OPENCLI_PV=0.18
+OPENCLI_P=openclipart-${OPENCLI_PV}
+DESCRIPTION="Movie creator from photos and video clips"
+HOMEPAGE="http://ffdiaporama.tuxfamily.org"
+SRC_URI="http://ffdiaporama.tuxfamily.org/script/GetPackage.php?f=${PN}_bin_${BIN_PV}.tar.gz -> ${PN}_bin_${BIN_PV}.tar.gz
+ http://ffdiaporama.tuxfamily.org/script/GetPackage.php?f=${PN}_rsc_${RSC_PV}.tar.gz -> ${PN}_rsc_${RSC_PV}.tar.gz
+ openclipart? ( http://openclipart.org/downloads/${OPENCLI_PV}/${OPENCLI_P}-svgonly.tar.bz2 )
+ texturemate? ( http://ffdiaporama.tuxfamily.org/script/GetPackage.php?f=${PN}_texturemate_${TMT_PV}.tar.gz -> ${PN}_texturemate_${TMT_PV}.tar.gz )"
+
+LICENSE="GPL-2
+ openclipart? ( CC0-1.0 )
+ texturemate? ( CC-BY-3.0 )"
+SLOT="0"
+KEYWORDS="~amd64 x86"
+IUSE="libav openclipart texturemate"
+
+RDEPEND="
+ dev-qt/qtcore:4
+ dev-qt/qtgui:4
+ dev-qt/qthelp:4
+ dev-qt/qtsql:4[sqlite]
+ dev-qt/qtsvg:4
+ media-gfx/exiv2
+ media-libs/libsdl[sound]
+ media-libs/taglib
+ !libav? ( >media-video/ffmpeg-1.2:0=[encode] )
+ libav? ( >=media-video/libav-9:0=[encode] )"
+DEPEND="${RDEPEND}"
+
+DOCS=( authors.txt )
+PATCHES=( "${FILESDIR}"/${P}-{ffmpeg-2.4,libav10}.patch )
+
+S="${WORKDIR}/ffDiaporama"
+
+src_prepare() {
+ echo "SUBDIRS += ../ffDiaporama_rsc" >> ffDiaporama.pro || die
+ if use texturemate; then
+ echo "SUBDIRS += ../ffDiaporama_texturemate" >> ffDiaporama.pro || die
+ fi
+ qt4-r2_src_prepare
+}
+
+src_install() {
+ qt4-r2_src_install
+ doicon -s 32 ffdiaporama.png
+ if use openclipart; then
+ dodir /usr/share/ffDiaporama/clipart/openclipart
+ cd "${WORKDIR}"/${OPENCLI_P}-svgonly/clipart || die
+ find . -type d -maxdepth 1 -not -name . -exec cp -R '{}' "${D}"/usr/share/ffDiaporama/clipart/openclipart \; || die
+ fi
+}
+
+pkg_preinst() {
+ gnome2_icon_savelist
+}
+
+pkg_postinst() {
+ fdo-mime_desktop_database_update
+ fdo-mime_mime_database_update
+ gnome2_icon_cache_update
+}
+
+pkg_postrm() {
+ fdo-mime_desktop_database_update
+ fdo-mime_mime_database_update
+ gnome2_icon_cache_update
+}
diff --git a/media-video/ffdiaporama/files/ffdiaporama-2.1-libav10.patch b/media-video/ffdiaporama/files/ffdiaporama-2.1-libav10.patch
new file mode 100644
index 000000000000..1b607ba6c66f
--- /dev/null
+++ b/media-video/ffdiaporama/files/ffdiaporama-2.1-libav10.patch
@@ -0,0 +1,427 @@
+--- src/ffDiaporama/engine/cBaseMediaFile.cpp 2014-02-09 10:48:04.000000000 +0100
++++ src/ffDiaporama/engine/cBaseMediaFile.cpp 2015-03-29 00:20:56.672641700 +0100
+@@ -1861,12 +1861,12 @@
+ }
+
+ cImageInCache::~cImageInCache() {
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if (FrameBufferYUV->opaque) {
+ avfilter_unref_buffer((AVFilterBufferRef *)FrameBufferYUV->opaque);
+ FrameBufferYUV->opaque=NULL;
+ }
+- #elif defined(FFMPEG) && (FFMPEGVERSIONINT>=201)
++ #else
+ if (FiltFrame) {
+ av_frame_unref(FiltFrame);
+ av_frame_free(&FiltFrame);
+@@ -2239,7 +2239,7 @@
+ LibavFile->streams[VideoStreamNumber]->discard=AVDISCARD_DEFAULT; // Setup STREAM options
+
+ // Setup decoder options
+- LibavFile->streams[VideoStreamNumber]->codec->debug_mv =0; // Debug level (0=nothing)
++ //LibavFile->streams[VideoStreamNumber]->codec->debug_mv =0; // Debug level (0=nothing)
+ LibavFile->streams[VideoStreamNumber]->codec->debug =0; // Debug level (0=nothing)
+ LibavFile->streams[VideoStreamNumber]->codec->workaround_bugs =1; // Work around bugs in encoders which sometimes cannot be detected automatically : 1=autodetection
+ LibavFile->streams[VideoStreamNumber]->codec->idct_algo =FF_IDCT_AUTO; // IDCT algorithm, 0=auto
+@@ -2256,12 +2256,12 @@
+ if (avcodec_open2(LibavFile->streams[VideoStreamNumber]->codec,Codec,NULL)>=0) {
+ // Get Aspect Ratio
+
+- AspectRatio=double(LibavFile->streams[VideoStreamNumber]->codec->sample_aspect_ratio.num)/double(LibavFile->streams[VideoStreamNumber]->codec->sample_aspect_ratio.den);
+-
+- if (LibavFile->streams[VideoStreamNumber]->sample_aspect_ratio.num!=0)
++ if (LibavFile->streams[VideoStreamNumber]->codec->sample_aspect_ratio.num!=0)
++ AspectRatio=double(LibavFile->streams[VideoStreamNumber]->codec->sample_aspect_ratio.num)/double(LibavFile->streams[VideoStreamNumber]->codec->sample_aspect_ratio.den);
++ else if (LibavFile->streams[VideoStreamNumber]->sample_aspect_ratio.num!=0)
+ AspectRatio=double(LibavFile->streams[VideoStreamNumber]->sample_aspect_ratio.num)/double(LibavFile->streams[VideoStreamNumber]->sample_aspect_ratio.den);
+-
+- if (AspectRatio==0) AspectRatio=1;
++ else
++ AspectRatio=1;
+
+ // Special case for DVD mode video without PAR
+ if ((AspectRatio==1)&&(LibavFile->streams[VideoStreamNumber]->codec->coded_width==720)&&((LibavFile->streams[VideoStreamNumber]->codec->coded_height==576)||(LibavFile->streams[VideoStreamNumber]->codec->coded_height==480)))
+@@ -2384,7 +2384,7 @@
+ AVCodec *ThumbDecoderCodec=avcodec_find_decoder(ThumbStream->codec->codec_id);
+
+ // Setup decoder options
+- ThumbStream->codec->debug_mv =0; // Debug level (0=nothing)
++ //ThumbStream->codec->debug_mv =0; // Debug level (0=nothing)
+ ThumbStream->codec->debug =0; // Debug level (0=nothing)
+ ThumbStream->codec->workaround_bugs =1; // Work around bugs in encoders which sometimes cannot be detected automatically : 1=autodetection
+ ThumbStream->codec->idct_algo =FF_IDCT_AUTO; // IDCT algorithm, 0=auto
+@@ -2552,7 +2552,7 @@
+ }
+
+ if (FrameBufferYUV!=NULL) {
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if (FrameBufferYUV->opaque) {
+ avfilter_unref_buffer((AVFilterBufferRef *)FrameBufferYUV->opaque);
+ FrameBufferYUV->opaque=NULL;
+@@ -2572,7 +2572,7 @@
+ if (RSC) {
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ audio_resample_close(RSC);
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ avresample_close(RSC);
+ avresample_free(&RSC);
+ #elif defined(FFMPEG)
+@@ -2619,7 +2619,7 @@
+ 1, // linear
+ 0); // cutoff
+ if (!RSC) ToLog(LOGMSG_CRITICAL,QString("CheckResampler: av_audio_resample_init failed"));
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ this->RSC_InChannelLayout =RSC_InChannelLayout;
+ this->RSC_OutChannelLayout=RSC_OutChannelLayout;
+ RSC=avresample_alloc_context();
+@@ -2704,7 +2704,7 @@
+ AVFilterInOut *outputs = (AVFilterInOut *)av_malloc(sizeof(AVFilterInOut));
+ AVFilterInOut *inputs = (AVFilterInOut *)av_malloc(sizeof(AVFilterInOut));
+
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+
+ QString args=QString("%1:%2:%3:%4:%5:%6:%7")
+ .arg(LibavVideoFile->streams[VideoStreamNumber]->codec->width)
+@@ -2768,10 +2768,8 @@
+ inputs->pad_idx = 0;
+ inputs->next = NULL;
+
+- #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
++ #if defined(LIBAV)
+ if ((result=avfilter_graph_parse(VideoFilterGraph,QString("yadif=1:-1").toLocal8Bit().constData(),inputs,outputs,NULL))<0) {
+- #elif (defined(LIBAV) && (LIBAVVERSIONINT<=9))
+- if ((result=avfilter_graph_parse(VideoFilterGraph,QString("yadif=deint=interlaced:mode=send_frame:parity=auto").toLocal8Bit().constData(),inputs,outputs,NULL))<0) {
+ #elif (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if ((result=avfilter_graph_parse(VideoFilterGraph,QString("yadif=deint=interlaced:mode=send_frame:parity=auto").toLocal8Bit().constData(),&inputs,&outputs,NULL))<0) {
+ #elif defined(FFMPEG)&&(FFMPEGVERSIONINT>=201)
+@@ -2799,7 +2797,7 @@
+
+ //====================================================================================================================
+
+-#if defined(LIBAV) || (FFMPEGVERSIONINT<201)
++#if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ int cVideoFile::VideoFilter_Process() {
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ // LIBAV 8
+@@ -2831,7 +2829,7 @@
+ FrameBufferYUV->opaque=(void *)avfilter_ref_buffer(VideoFilterOut->inputs[0]->cur_buf,AV_PERM_READ);
+ }
+
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ // LIBAV9
+ AVFilterBufferRef *m_pBufferRef=NULL;
+ int Ret=av_buffersrc_write_frame(VideoFilterIn,FrameBufferYUV);
+@@ -2964,7 +2962,7 @@
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ Data=(u_int8_t *)av_malloc(MaxAudioLenDecoded);
+ if (Data) *SizeDecoded=audio_resample(RSC,(short int*)Data,(short int*)Frame->data[0],Frame->nb_samples)*DstSampleSize;
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ u_int8_t *in_data[RESAMPLE_MAX_CHANNELS]={0};
+ int in_linesize=0;
+ Data=Frame->data[0];
+@@ -2979,7 +2977,7 @@
+ } else if (av_samples_fill_arrays(out_data,&out_linesize,Data,RSC_OutChannels,out_samples,RSC_OutSampleFmt,1)<0) {
+ ToLog(LOGMSG_CRITICAL,QString("failed out_data fill arrays"));
+ } else {
+- *SizeDecoded=avresample_convert(RSC,out_data,out_linesize,out_samples,in_data,in_linesize,Frame->nb_samples)*DstSampleSize;
++ *SizeDecoded=avresample_convert(RSC,out_data,out_linesize,out_samples,Frame->data,in_linesize,Frame->nb_samples)*DstSampleSize;
+ }
+ }
+ #elif defined(FFMPEG)
+@@ -3024,7 +3022,7 @@
+
+ if (!FPSDuration) {
+ if (PreviewMode) FPSDuration=double(AV_TIME_BASE)/((cApplicationConfig *)ApplicationConfig)->PreviewFPS;
+- else if (VideoStream) FPSDuration=double(VideoStream->r_frame_rate.den*AV_TIME_BASE)/double(VideoStream->r_frame_rate.num);
++ else if (VideoStream) FPSDuration=double(VideoStream->avg_frame_rate.den*AV_TIME_BASE)/double(VideoStream->avg_frame_rate.num);
+ else FPSDuration=double(AV_TIME_BASE)/double(SoundTrackBloc->SamplingRate);
+ }
+ // If position >= end of file : disable audio
+@@ -3164,7 +3162,7 @@
+ Data=Frame->data[0];
+ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=8))
+ SizeDecoded=Frame->nb_samples*av_get_bytes_per_sample(AudioStream->codec->sample_fmt)*AudioStream->codec->channels;
+- #elif (defined(LIBAV)&&(LIBAVVERSIONINT<=9))
++ #elif defined(LIBAV)
+ SizeDecoded=av_samples_get_buffer_size(NULL,AudioStream->codec->channels,Frame->nb_samples,AudioStream->codec->sample_fmt,0);
+ #elif defined(FFMPEG)
+ SizeDecoded=Frame->nb_samples*av_get_bytes_per_sample(AudioStream->codec->sample_fmt)*AudioStream->codec->channels;
+@@ -3290,7 +3288,7 @@
+ if (FrameBufferYUV==NULL) FrameBufferYUV=ALLOCFRAME();
+ if (FrameBufferYUV) {
+
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if (FrameBufferYUV->opaque) {
+ avfilter_unref_buffer((AVFilterBufferRef *)FrameBufferYUV->opaque);
+ FrameBufferYUV->opaque=NULL;
+@@ -3324,14 +3322,14 @@
+ if ((Deinterlace)&&(!VideoFilterGraph)) VideoFilter_Open();
+ else if ((!Deinterlace)&&(VideoFilterGraph)) VideoFilter_Close();
+
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if (VideoFilterGraph) VideoFilter_Process();
+- #elif defined(FFMPEG)&&(FFMPEGVERSIONINT>=201)
++ #elif (defined(LIBAV)&&(LIBAVVERSIONINT>=10) || defined(FFMPEG)&&(FFMPEGVERSIONINT>=201))
+ AVFrame *FiltFrame=NULL;
+ if (VideoFilterGraph) {
+- // FFMPEG 2.0
++ // FFMPEG 2.0 / LIBAV 10
+ // push the decoded frame into the filtergraph
+- if (av_buffersrc_add_frame_flags(VideoFilterIn,FrameBufferYUV,AV_BUFFERSRC_FLAG_KEEP_REF)<0) {
++ if (av_buffersrc_write_frame(VideoFilterIn,FrameBufferYUV)<0) {
+ ToLog(LOGMSG_INFORMATION,"IN:cVideoFile::ReadFrame : Error while feeding the filtergraph");
+ } else {
+ FiltFrame=av_frame_alloc();
+@@ -3364,7 +3362,7 @@
+
+ // Append this frame
+ cImageInCache *ObjImage=
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ new cImageInCache(FrameBufferYUVPosition,NULL,FrameBufferYUV);
+ #else
+ new cImageInCache(FrameBufferYUVPosition,FiltFrame,FrameBufferYUV);
+@@ -3386,7 +3384,7 @@
+ IsVideoFind=Nbr>0;
+ }
+ if (FreeFrames) {
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if (FrameBufferYUV->opaque) {
+ avfilter_unref_buffer((AVFilterBufferRef *)FrameBufferYUV->opaque);
+ FrameBufferYUV->opaque=NULL;
+@@ -3401,7 +3399,7 @@
+ FREEFRAME(&FrameBufferYUV);
+ } else {
+ FrameBufferYUV=NULL;
+- #if defined(FFMPEG)&&(FFMPEGVERSIONINT>=201)
++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=201) || defined(LIBAV)&&(LIBAVVERSIONINT>=10))
+ FiltFrame =NULL;
+ #endif
+ }
+@@ -3490,7 +3488,7 @@
+
+ if (img_convert_ctx!=NULL) {
+ int ret;
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ if (Frame->opaque) {
+ AVFilterBufferRef *Buf=(AVFilterBufferRef *)Frame->opaque;
+ ret = sws_scale(
+@@ -3565,12 +3563,12 @@
+ int cVideoFile::getThreadFlags(AVCodecID ID) {
+ int Ret=0;
+ switch (ID) {
+- case CODEC_ID_PRORES:
+- case CODEC_ID_MPEG1VIDEO:
+- case CODEC_ID_DVVIDEO:
+- case CODEC_ID_MPEG2VIDEO: Ret=FF_THREAD_SLICE; break;
+- case CODEC_ID_H264 : Ret=FF_THREAD_FRAME|FF_THREAD_SLICE; break;
+- default: Ret=FF_THREAD_FRAME; break;
++ case AV_CODEC_ID_PRORES:
++ case AV_CODEC_ID_MPEG1VIDEO:
++ case AV_CODEC_ID_DVVIDEO:
++ case AV_CODEC_ID_MPEG2VIDEO: Ret=FF_THREAD_SLICE; break;
++ case AV_CODEC_ID_H264 : Ret=FF_THREAD_FRAME|FF_THREAD_SLICE; break;
++ default: Ret=FF_THREAD_FRAME; break;
+ }
+ return Ret;
+ }
+@@ -3607,7 +3605,7 @@
+ AudioDecoderCodec=avcodec_find_decoder(AudioStream->codec->codec_id);
+
+ // Setup decoder options
+- AudioStream->codec->debug_mv =0; // Debug level (0=nothing)
++ //AudioStream->codec->debug_mv =0; // Debug level (0=nothing)
+ AudioStream->codec->debug =0; // Debug level (0=nothing)
+ AudioStream->codec->workaround_bugs =1; // Work around bugs in encoders which sometimes cannot be detected automatically : 1=autodetection
+ AudioStream->codec->idct_algo =FF_IDCT_AUTO; // IDCT algorithm, 0=auto
+@@ -3648,7 +3646,7 @@
+ VideoDecoderCodec=avcodec_find_decoder(VideoStream->codec->codec_id);
+
+ // Setup decoder options
+- VideoStream->codec->debug_mv =0; // Debug level (0=nothing)
++ //VideoStream->codec->debug_mv =0; // Debug level (0=nothing)
+ VideoStream->codec->debug =0; // Debug level (0=nothing)
+ VideoStream->codec->workaround_bugs =1; // Work around bugs in encoders which sometimes cannot be detected automatically : 1=autodetection
+ VideoStream->codec->idct_algo =FF_IDCT_AUTO; // IDCT algorithm, 0=auto
+@@ -3662,7 +3660,19 @@
+ // Hack to correct wrong frame rates that seem to be generated by some codecs
+ if (VideoStream->codec->time_base.num>1000 && VideoStream->codec->time_base.den==1)
+ VideoStream->codec->time_base.den=1000;
+-
++
++ if (VideoStream->codec->time_base.num == 0) {
++ VideoStream->codec->time_base.num = VideoStream->avg_frame_rate.den;
++ VideoStream->codec->time_base.den = VideoStream->avg_frame_rate.num;
++ }
++
++ if (VideoStream->codec->sample_aspect_ratio.num == 0) {
++ if (VideoStream->sample_aspect_ratio.num == 0)
++ VideoStream->codec->sample_aspect_ratio.num = VideoStream->codec->sample_aspect_ratio.den = 1;
++ else
++ VideoStream->codec->sample_aspect_ratio = VideoStream->sample_aspect_ratio;
++ }
++
+ if ((VideoDecoderCodec==NULL)||(avcodec_open2(VideoStream->codec,VideoDecoderCodec,NULL)<0)) return false;
+ LibavStartTime=LibavVideoFile->start_time;
+ }
+
+--- src/ffDiaporama/engine/cBaseMediaFile.h 2014-02-09 10:48:04.000000000 +0100
++++ src/ffDiaporama/engine/cBaseMediaFile.h 2015-03-29 00:14:35.225871600 +0100
+@@ -429,7 +429,7 @@
+
+ virtual int VideoFilter_Open();
+ virtual void VideoFilter_Close();
+- #if defined(LIBAV) || (FFMPEGVERSIONINT<201)
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ virtual int VideoFilter_Process();
+ #endif
+
+@@ -444,7 +444,7 @@
+ // Audio resampling
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ ReSampleContext *RSC;
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ AVAudioResampleContext *RSC;
+ uint64_t RSC_InChannelLayout,RSC_OutChannelLayout;
+ #elif defined(FFMPEG)
+
+--- src/ffDiaporama/engine/cDeviceModelDef.h 2014-02-09 10:48:04.000000000 +0100
++++ src/ffDiaporama/engine/cDeviceModelDef.h 2015-03-28 23:57:31.667562500 +0100
+@@ -65,7 +65,14 @@
+
+ #if (LIBAVUTIL_VERSION_MICRO<100)&&(LIBAVCODEC_VERSION_MICRO<100)&&(LIBAVFORMAT_VERSION_MICRO<100)&&(LIBAVDEVICE_VERSION_MICRO<100)&&(LIBAVFILTER_VERSION_MICRO<100)&&(LIBSWSCALE_VERSION_MICRO<100)
+ #define LIBAV
+- #if ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,3,0))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(54,35,0))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(54,20,0))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(53,2,0))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,3,0))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,1,1)))
++ #if ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(53,3,0))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,34,1))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,12,0))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(54,0,0))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(4,2,0))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,1,2)))
++ #define LIBAVVERSION "Libav 10 or higher"
++ #define LIBAVVERSIONINT 10
++ #include "libavresample/avresample.h"
++ #define RESAMPLE_MAX_CHANNELS AVRESAMPLE_MAX_CHANNELS
++ #include "libavfilter/buffersink.h"
++ #include "libavfilter/buffersrc.h"
++ #elif ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,3,0))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(54,35,0))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(54,20,0))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(53,2,0))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,3,0))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,1,1)))
+ #define LIBAVVERSION "Libav 9.x"
+ #define LIBAVVERSIONINT 9
+ #include "libavresample/avresample.h"
+@@ -110,7 +117,7 @@
+ #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
+ #endif
+
+-#if !defined(FF_API_CODEC_ID)
++#if (LIBAVCODEC_VERSION_MAJOR < 55)
+ #define AV_CODEC_ID_NONE CODEC_ID_NONE
+ #define AV_CODEC_ID_MJPEG CODEC_ID_MJPEG
+ #define AV_CODEC_ID_MPEG2VIDEO CODEC_ID_MPEG2VIDEO
+@@ -133,6 +140,9 @@
+ #define AV_CODEC_ID_FLAC CODEC_ID_FLAC
+ #define AV_CODEC_ID_WMAV1 CODEC_ID_WMAV1
+ #define AV_CODEC_ID_WMAV2 CODEC_ID_WMAV2
++ #define AV_CODEC_ID_PRORES CODEC_ID_PRORES
++ #define AV_CODEC_ID_MPEG1VIDEO CODEC_ID_MPEG1VIDEO
++ #define AV_CODEC_ID_DVVIDEO CODEC_ID_DVVIDEO
+ #endif
+
+ #if !defined(avcodec_free_frame)
+
+--- src/ffDiaporama/engine/_EncodeVideo.cpp 2014-02-09 10:48:04.000000000 +0100
++++ src/ffDiaporama/engine/_EncodeVideo.cpp 2015-03-29 00:23:23.090780000 +0100
+@@ -136,7 +136,7 @@
+ av_freep(&Container->streams[i]->codec->extradata);
+ av_freep(&Container->streams[i]->codec->subtitle_header);
+ av_freep(&Container->streams[i]->priv_data);
+- if (Container->streams[i]->info) av_freep(&Container->streams[i]->info->duration_error);
++ //if (Container->streams[i]->info) av_freep(&Container->streams[i]->info->duration_error);
+ }
+ //=== End of patch
+ avformat_free_context(Container);
+@@ -151,7 +151,7 @@
+ if (AudioResampler) {
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ audio_resample_close(AudioResampler);
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ avresample_close(AudioResampler);
+ avresample_free(&AudioResampler);
+ #elif defined(FFMPEG)
+@@ -185,12 +185,12 @@
+ int cEncodeVideo::getThreadFlags(AVCodecID ID) {
+ int Ret=0;
+ switch (ID) {
+- case CODEC_ID_PRORES:
+- case CODEC_ID_MPEG1VIDEO:
+- case CODEC_ID_DVVIDEO:
+- case CODEC_ID_MPEG2VIDEO: Ret=FF_THREAD_SLICE; break;
+- case CODEC_ID_H264 : Ret=FF_THREAD_FRAME|FF_THREAD_SLICE; break;
+- default: Ret=FF_THREAD_FRAME; break;
++ case AV_CODEC_ID_PRORES:
++ case AV_CODEC_ID_MPEG1VIDEO:
++ case AV_CODEC_ID_DVVIDEO:
++ case AV_CODEC_ID_MPEG2VIDEO: Ret=FF_THREAD_SLICE; break;
++ case AV_CODEC_ID_H264 : Ret=FF_THREAD_FRAME|FF_THREAD_SLICE; break;
++ default: Ret=FF_THREAD_FRAME; break;
+ }
+ return Ret;
+ }
+@@ -789,7 +789,7 @@
+ Continue=false;
+ }
+ }
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ if ((AudioStream->codec->sample_fmt!=ToEncodeMusic.SampleFormat)||(AudioStream->codec->channels!=ToEncodeMusic.Channels)||(AudioSampleRate!=ToEncodeMusic.SamplingRate)) {
+ if (!AudioResamplerBuffer) {
+ int out_linesize=0;
+@@ -857,7 +857,7 @@
+ }
+
+ // Define InterleaveFrame to not compute it for each frame
+- #if defined(FFMPEG)&&(FFMPEGVERSIONINT>=201)
++ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=201) || (LIBAVVERSIONINT >=10))
+ InterleaveFrame=(strcmp(Container->oformat->name,"avi")!=0);
+ #else
+ InterleaveFrame=true;
+@@ -1038,7 +1038,7 @@
+ } else {
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ DestPacket=(u_int8_t *)PacketSound;
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ // LIBAV 9 => Convert sample format (is needed)
+ if ((AudioResampler!=NULL)&&(AudioResamplerBuffer!=NULL)) {
+ DestPacket=AudioResamplerBuffer;
+
+--- src/ffDiaporama/engine/_EncodeVideo.h 2014-02-09 10:48:04.000000000 +0100
++++ src/ffDiaporama/engine/_EncodeVideo.h 2015-03-29 00:22:10.452192800 +0100
+@@ -82,7 +82,7 @@
+ int AudioResamplerBufferSize;
+ #if defined(LIBAV) && (LIBAVVERSIONINT<=8)
+ ReSampleContext *AudioResampler; // Audio resampler
+- #elif defined(LIBAV) && (LIBAVVERSIONINT<=9)
++ #elif defined(LIBAV)
+ AVAudioResampleContext *AudioResampler;
+ #elif defined(FFMPEG)
+ SwrContext *AudioResampler;
+
+--- src/ffDiaporama/MainWindow/mainwindow.cpp 2014-02-09 10:48:08.000000000 +0100
++++ src/ffDiaporama/MainWindow/mainwindow.cpp 2015-03-29 00:00:47.710860800 +0100
+@@ -472,7 +472,7 @@
+ delete ApplicationConfig;
+
+ // Close some libav additionnals
+- #if defined(LIBAV) || (defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
++ #if (defined(LIBAV)&&(LIBAVVERSIONINT<=9) || defined(FFMPEG)&&(FFMPEGVERSIONINT<201))
+ avfilter_uninit();
+ #endif
+ avformat_network_deinit();