commit:     8a9e0d101236da1e1f3ae74df35976c7e03f2b3f
Author:     Julian Ospald <hasufell <AT> gentoo <DOT> org>
AuthorDate: Sun Aug  9 15:24:33 2015 +0000
Commit:     Julian Ospald <hasufell <AT> gentoo <DOT> org>
CommitDate: Sun Aug  9 15:25:17 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8a9e0d10

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

 media-video/ffdiaporama/ffdiaporama-2.1-r1.ebuild  |  78 ++++
 .../files/ffdiaporama-2.1-libav10.patch            | 427 +++++++++++++++++++++
 2 files changed, 505 insertions(+)

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 0000000..9adc79f
--- /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 0000000..1b607ba
--- /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();

Reply via email to