You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
428 lines
24 KiB
428 lines
24 KiB
--- 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();
|