[SCM] ffdiaporama/master: Compile against libav10 (Closes: #739221)
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Mon Mar 24 23:37:33 UTC 2014
The following commit has been merged in the master branch:
commit 120818abe277891fc730f9cba3bc5ff17805892c
Author: Reinhard Tartler <siretart at tauware.de>
Date: Mon Mar 24 19:33:17 2014 -0400
Compile against libav10 (Closes: #739221)
diff --git a/debian/changelog b/debian/changelog
index cd5cdb8..a6f5612 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+ffdiaporama (1.5-3) experimental; urgency=low
+
+ * Team upload.
+ * Compile against libav10 (Closes: #739221)
+
+ -- Reinhard Tartler <siretart at tauware.de> Mon, 24 Mar 2014 19:21:00 -0400
+
ffdiaporama (1.5-2) unstable; urgency=low
* Upload to unstable.
diff --git a/debian/control b/debian/control
index f08bbb3..8ad27ae 100644
--- a/debian/control
+++ b/debian/control
@@ -6,17 +6,18 @@ Uploaders:
Fabrice Coutadeur <coutadeurf at gmail.com>
Build-Depends:
debhelper (>= 9),
- libavcodec-dev,
- libavdevice-dev,
- libavfilter-dev,
- libavformat-dev,
- libavutil-dev,
+ libavcodec-dev (>= 6:10~),
+ libavdevice-dev (>= 6:10~),
+ libavfilter-dev (>= 6:10~),
+ libavformat-dev (>= 6:10~),
+ libavresample-dev (>= 6:10~),
+ libavutil-dev (>= 6:10~),
libexiv2-dev,
libqt4-dev,
libqimageblitz-dev,
libsdl-image1.2-dev,
libsdl-mixer1.2-dev,
- libswscale-dev,
+ libswscale-dev (>= 6:10~),
libtag1-dev,
qt4-dev-tools
Standards-Version: 3.9.4
diff --git a/debian/patches/libav10.patch b/debian/patches/libav10.patch
new file mode 100644
index 0000000..85bc7a6
--- /dev/null
+++ b/debian/patches/libav10.patch
@@ -0,0 +1,431 @@
+From: anton at khirnov.net
+To: 739221 at bugs.debian.org
+Subject: Re: FTBFS with libav10
+Date: Sat, 01 Mar 2014 11:14:08 +0100
+
+--- a/src/engine/cBaseMediaFile.cpp
++++ b/src/engine/cBaseMediaFile.cpp
+@@ -1603,7 +1603,7 @@ void cVideoFile::ReadAudioFrame(bool Pre
+ int64_t SrcSampleSize =(AudioStream->codec->sample_fmt==AV_SAMPLE_FMT_S16?2:1)*int64_t(AudioStream->codec->channels);
+ int64_t DstSampleSize =(SoundTrackBloc->SampleBytes*SoundTrackBloc->Channels);
+ AVPacket *StreamPacket =NULL;
+- int64_t MaxAudioLenDecoded =AVCODEC_MAX_AUDIO_FRAME_SIZE*3;
++ int64_t MaxAudioLenDecoded =192000*3;
+ int64_t AudioLenDecoded =0;
+ uint8_t *BufferForDecoded =(uint8_t *)av_malloc(MaxAudioLenDecoded+8); //***************** !
+ double dPosition =double(Position)/1000; // Position in double format
+@@ -1745,78 +1745,37 @@ void cVideoFile::ReadAudioFrame(bool Pre
+ if (AudioLenDecoded>0) {
+ if ((AudioStream->codec->sample_fmt!=AV_SAMPLE_FMT_S16)||(AudioStream->codec->channels!=2)||(AudioStream->codec->sample_rate!=48000)) {
+ // Resample sound to wanted freq. using ffmpeg audio_resample function
+- /*#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54,60,0)
+-
+- SwrContext *RSC=swr_alloc_set_opts(NULL,
+- AV_CH_LAYOUT_STEREO, // output channel layout (AV_CH_LAYOUT_*)
+- av_get_alt_sample_fmt(AV_SAMPLE_FMT_S16, 1), // output sample format (AV_SAMPLE_FMT_*).
+- 48000, // output sample rate (frequency in Hz)
+- AudioStream->codec->channel_layout, // input channel layout (AV_CH_LAYOUT_*)
+- av_get_alt_sample_fmt(AudioStream->codec->sample_fmt,1), // input sample format (AV_SAMPLE_FMT_*).
+- AudioStream->codec->sample_rate, // input sample rate (frequency in Hz)
+- 0, // logging level offset
+- NULL); // parent logging context, can be NULL
+-
+- if (RSC!=NULL) {
+- swr_init(RSC);
+-
+- uint8_t *BufSampled=(uint8_t *)av_malloc(MaxAudioLenDecoded);
+- const uint8_t *BufSrc=BufferForDecoded;
+-
+- AudioLenDecoded=swr_convert(RSC,&BufSampled,MaxAudioLenDecoded/DstSampleSize,&BufSrc,AudioLenDecoded/SrcSampleSize)*DstSampleSize;
+-
+- // Adjust volume
+- if (Volume!=1) {
+- int16_t *Buf1=(int16_t*)BufSampled;
+- int32_t mix;
+- for (int j=0;j<AudioLenDecoded/4;j++) {
+- // Left channel : Adjust if necessary (16 bits)
+- mix=int32_t(double(*(Buf1))*Volume); if (mix>32767) mix=32767; else if (mix<-32768) mix=-32768; *(Buf1++)=int16_t(mix);
+- // Right channel : Adjust if necessary (16 bits)
+- mix=int32_t(double(*(Buf1))*Volume); if (mix>32767) mix=32767; else if (mix<-32768) mix=-32768; *(Buf1++)=int16_t(mix);
+- }
+- }
+-
+- // Append data to SoundTrackBloc
+- SoundTrackBloc->AppendData((int16_t*)BufSampled,AudioLenDecoded);
+- swr_free(&RSC); // Close the resampling audio context
+- av_free(BufSampled); // Free allocated buffers
++ AVAudioResampleContext *avr = avresample_alloc_context();
++ uint8_t *BufSampled = (uint8_t*)av_malloc(MaxAudioLenDecoded);
++ int ret;
++
++ av_opt_set_int(avr, "in_channel_layout", AudioStream->codec->channel_layout, 0);
++ av_opt_set_int(avr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0);
++ av_opt_set_int(avr, "in_sample_rate", AudioStream->codec->sample_rate, 0);
++ av_opt_set_int(avr, "out_sample_rate", 48000, 0);
++ av_opt_set_int(avr, "in_sample_fmt", AudioStream->codec->sample_fmt, 0);
++ av_opt_set_int(avr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0);
++
++ avresample_open(avr);
++
++ ret = avresample_convert(avr, &BufSampled, MaxAudioLenDecoded, MaxAudioLenDecoded / DstSampleSize,
++ &BufferForDecoded, AudioLenDecoded, AudioLenDecoded / SrcSampleSize);
++
++ // Adjust volume
++ if (Volume!=1) {
++ int16_t *Buf1=(int16_t*)BufSampled;
++ int32_t mix;
++ for (int j = 0; j < ret; j++) {
++ Buf1[2 * j] = av_clip_int16(Buf1[2 * j] * Volume);
++ Buf1[2 * j + 1] = av_clip_int16(Buf1[2 * j + 1] * Volume);
+ }
++ }
+
+- #else // Before AV_VERSION_INT(54,60,0)
+- */
+- ReSampleContext *RSC=av_audio_resample_init( // Context for resampling audio data
+- SoundTrackBloc->Channels,AudioStream->codec->channels, // output_channels, input_channels
+- SoundTrackBloc->SamplingRate,AudioStream->codec->sample_rate, // output_rate, input_rate
+- AV_SAMPLE_FMT_S16,AudioStream->codec->sample_fmt, // sample_fmt_out, sample_fmt_in
+- 16, // filter_length (trying 4 !)
+- 10, // log2_phase_count
+- 1, // linear
+- 1.0); // cutoff
+- if (RSC!=NULL) {
+-
+- short int *BufSampled=(short int*)av_malloc(MaxAudioLenDecoded);
+-
+- AudioLenDecoded=audio_resample(RSC,BufSampled,(short int*)BufferForDecoded,AudioLenDecoded/SrcSampleSize)*DstSampleSize;
+-
+- // Adjust volume
+- if (Volume!=1) {
+- int16_t *Buf1=(int16_t*)BufSampled;
+- int32_t mix;
+- for (int j=0;j<AudioLenDecoded/4;j++) {
+- // Left channel : Adjust if necessary (16 bits)
+- mix=int32_t(double(*(Buf1))*Volume); if (mix>32767) mix=32767; else if (mix<-32768) mix=-32768; *(Buf1++)=int16_t(mix);
+- // Right channel : Adjust if necessary (16 bits)
+- mix=int32_t(double(*(Buf1))*Volume); if (mix>32767) mix=32767; else if (mix<-32768) mix=-32768; *(Buf1++)=int16_t(mix);
+- }
+- }
++ // Append data to SoundTrackBloc
++ SoundTrackBloc->AppendData((int16_t*)BufSampled, ret * 2 * 2);
++ avresample_free(&avr);
++ av_free(BufSampled); // Free allocated buffers
+
+- // Append data to SoundTrackBloc
+- SoundTrackBloc->AppendData((int16_t*)BufSampled,AudioLenDecoded);
+- audio_resample_close(RSC); // Close the resampling audio context
+- av_free(BufSampled); // Free allocated buffers
+- }
+- //#endif
+ } else {
+ SoundTrackBloc->AppendData((int16_t*)BufferForDecoded,AudioLenDecoded);
+ }
+@@ -1943,15 +1902,7 @@ void cVideoFile::ReadAudioFrame(bool Pre
+ inputs->pad_idx = 0;
+ inputs->next = NULL;
+
+- #if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(2,23,0)
+ if ((result=avfilter_graph_parse(VideoFilterGraph,m_filters.toLocal8Bit().constData(),inputs,outputs,NULL))<0) {
+- #elif LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,1,0)
+- if ((result=avfilter_graph_parse(VideoFilterGraph,m_filters.toLocal8Bit().constData(),&inputs,&outputs,NULL))<0) {
+- #elif LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,17,0)
+- if ((result=avfilter_graph_parse(VideoFilterGraph,m_filters.toLocal8Bit().constData(),inputs,outputs,NULL))<0) {
+- #else
+- if ((result=avfilter_graph_parse(VideoFilterGraph,m_filters.toLocal8Bit().constData(),&inputs,&outputs,NULL))<0) {
+- #endif
+ ToLog(LOGMSG_CRITICAL,QString("Error in cVideoFile::VideoFilter_Open : avfilter_graph_parse"));
+ return result;
+ }
+--- a/src/engine/cDeviceModelDef.cpp
++++ b/src/engine/cDeviceModelDef.cpp
+@@ -142,12 +142,12 @@ int ORDERIMAGENAME[2][NBR_SIZEDEF]={
+
+ struct sVideoCodecDef VIDEOCODECDEF[NBR_VIDEOCODECDEF]={
+ {
+- false,false,CODEC_ID_MJPEG,VCODEC_MJPEG,VCODECST_MJPEG, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_MJPEG,VCODEC_MJPEG,VCODECST_MJPEG, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "mjpeg","Motion JPEG", // ShortName[50], LongName[200]
+ "", // PossibleBitrate
+ {{""},{""}} // DefaultBitrate[2][NBR_SIZEDEF]
+ },{
+- false,false,CODEC_ID_MPEG2VIDEO,VCODEC_MPEG,VCODECST_MPEG, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_MPEG2VIDEO,VCODEC_MPEG,VCODECST_MPEG, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "mpeg2video","MPEG-2 video", // ShortName[50], LongName[200]
+ "2000k#3000k#4000k#6000k#8000k#10000k#12000k#15000k#20000k#400k", // PossibleBitrate
+ {{ // DefaultBitrate[2][NBR_SIZEDEF] - PAL
+@@ -176,7 +176,7 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ "20000k" // 1080p-29.97
+ }}
+ },{
+- false,false,CODEC_ID_MPEG4,VCODEC_MPEG4,VCODECST_MPEG4, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_MPEG4,VCODEC_MPEG4,VCODECST_MPEG4, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "mpeg4","DivX/XVid/MPEG-4", // ShortName[50], LongName[200]
+ "500k#1000k#1200k#1500k#2000k#2500k#3000k#4000k#5000k#6000k#8000k#400k#4500k", // PossibleBitrate
+ {{ // DefaultBitrate[2][NBR_SIZEDEF] - PAL
+@@ -205,7 +205,7 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ "8000k" // 1080p-29.97
+ }}
+ },{
+- false,false,CODEC_ID_H264,VCODEC_H264HQ,VCODECST_H264HQ, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_H264,VCODEC_H264HQ,VCODECST_H264HQ, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "libx264","High Quality H.264 AVC/MPEG-4 AVC", // ShortName[50], LongName[200]
+ "500k#1000k#1200k#1500k#2000k#2500k#3000k#4000k#5000k#6000k#8000k#10000k#12000k#400k#3500k", // PossibleBitrate
+ {{ // DefaultBitrate[2][NBR_SIZEDEF] - PAL
+@@ -234,7 +234,7 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ "8000k", // 1080p-29.97
+ }}
+ },{
+- false,false,CODEC_ID_H264,VCODEC_H264PQ,VCODECST_H264PQ, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_H264,VCODEC_H264PQ,VCODECST_H264PQ, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "libx264","Phone Quality H.264 AVC/MPEG-4 AVC", // ShortName[50], LongName[200]
+ "500k#1000k#1200k#1500k#2000k#2500k#3000k#4000k#5000k#6000k#8000k#10000k#400k#3500k", // PossibleBitrate
+ {{ // DefaultBitrate[2][NBR_SIZEDEF] - PAL
+@@ -263,7 +263,7 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ "8000k" // 1080p-29.97
+ }}
+ },{
+- false,false,CODEC_ID_VP8,VCODEC_VP8,VCODECST_VP8, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_VP8,VCODEC_VP8,VCODECST_VP8, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "libvpx","WebM-VP8", // ShortName[50], LongName[200]
+ "500k#1000k#1200k#1500k#2000k#2500k#3000k#4000k#5000k#6000k#8000k#400k#3500k", // PossibleBitrate
+ {{ // DefaultBitrate[2][NBR_SIZEDEF] - PAL
+@@ -321,7 +321,7 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ "8000k" // 1080p-29.97
+ }}
+ },{
+- false,false,CODEC_ID_THEORA,VCODEC_THEORA,VCODECST_THEORA, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_THEORA,VCODEC_THEORA,VCODECST_THEORA, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "libtheora","Theora VP3", // ShortName[50], LongName[200]
+ "500k#1000k#1200k#1500k#2000k#2500k#3000k#4000k#5000k#6000k#8000k#400k#3500k", // PossibleBitrate
+ {{ // DefaultBitrate[2][NBR_SIZEDEF] - PAL
+@@ -350,22 +350,22 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ "8000k" // 1080p-29.97
+ }}
+ },{
+- false,false,CODEC_ID_H264,VCODEC_X264LL,VCODECST_X264LL, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_H264,VCODEC_X264LL,VCODECST_X264LL, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "libx264","x264 lossless", // ShortName[50], LongName[200]
+ "", // PossibleBitrate
+ {{""},{""}} // DefaultBitrate[2][NBR_SIZEDEF]
+ },{
+- false,false,CODEC_ID_WMV1,VCODEC_WMV1,VCODECST_WMV1, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_WMV1,VCODEC_WMV1,VCODECST_WMV1, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "wmv1","Windows Media Video 7", // ShortName[50], LongName[200]
+ "", // PossibleBitrate
+ {{""},{""}} // DefaultBitrate[2][NBR_SIZEDEF]
+ },{
+- false,false,CODEC_ID_WMV2,VCODEC_WMV2,VCODECST_WMV2, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_WMV2,VCODEC_WMV2,VCODECST_WMV2, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "wmv2","Windows Media Video 8", // ShortName[50], LongName[200]
+ "", // PossibleBitrate
+ {{""},{""}} // DefaultBitrate[2][NBR_SIZEDEF]
+ },{
+- false,false,CODEC_ID_WMV3,VCODEC_WMV3,VCODECST_WMV3, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
++ false,false,AV_CODEC_ID_WMV3,VCODEC_WMV3,VCODECST_WMV3, // IsFind,Codec_id,FFD_VCODEC,FFD_VCODECST
+ "wmv3","Windows Media Video 9", // ShortName[50], LongName[200]
+ "", // PossibleBitrate
+ {{""},{""}} // DefaultBitrate[2][NBR_SIZEDEF]
+@@ -373,17 +373,17 @@ struct sVideoCodecDef VIDEOCODECDEF[NBR_
+ };
+
+ struct sAudioCodecDef AUDIOCODECDEF[NBR_AUDIOCODECDEF]={
+- {false,false, CODEC_ID_PCM_S16LE,"pcm_s16le", "WAV (PCM signed 16-bit little-endian)","", false,"",""},
+- {false,false, CODEC_ID_MP3, "libmp3lame", "MP3 (MPEG-1/2 Audio Layer III)", "8k#16k#24k#32k#40k#48k#56k#64k#80k#96k#112k#128k#144k#160k#192k#224k#256k#320k", false,"","160k"},
+- {false,false, CODEC_ID_AAC, "aac", "AAC-LC (Advanced Audio Codec)", "64k#80k#96k#112k#128k#144k#160k#192k#224k#256k#320k#384k", true,"224k#256k#320k#384k#448k#500k#512k#576k#640k","160k"},
+- {false,false, CODEC_ID_AC3, "ac3", "AC3 (Doly Digital)", "64k#80k#96k#112k#128k#144k#160k#192k#224k#256k#320k#384k", true,"224k#256k#320k#384k#448k#500k#512k#576k#640k","160k"},
+- {false,false, CODEC_ID_VORBIS, "vorbis", "OGG (Vorbis)", "64k#96k#128k#192k#256k#500k", false,"","128k"},
+- {false,false, CODEC_ID_MP2, "mp2", "MP2 (MPEG-1 Audio Layer II)", "64k#96k#128k#192k#256k#500k", false,"","128k"},
+- {false,false, CODEC_ID_AMR_WB, "libvo_amrwbenc", "Adaptive Multi-Rate (AMR) Wide-Band", "6.60k#8.85k#12.65k#14.25k#15.85k#18.25k#19.85k#23.05k#23.85k", false,"","6.60k"},
+- {false,false, CODEC_ID_FLAC, "flac", "FLAC (Free Lossless Audio Codec)", "", false,"",""},
+- {false,false, CODEC_ID_AMR_NB, "libopencore_amrnb", "Adaptive Multi-Rate (AMR) NB", "", false,"",""},
+- {false,false, CODEC_ID_WMAV1, "wmav1", "Windows Media Audio 1", "", false,"",""},
+- {false,false, CODEC_ID_WMAV2, "wmav2", "Windows Media Audio 2", "", false,"",""}
++ {false,false, AV_CODEC_ID_PCM_S16LE,"pcm_s16le", "WAV (PCM signed 16-bit little-endian)","", false,"",""},
++ {false,false, AV_CODEC_ID_MP3, "libmp3lame", "MP3 (MPEG-1/2 Audio Layer III)", "8k#16k#24k#32k#40k#48k#56k#64k#80k#96k#112k#128k#144k#160k#192k#224k#256k#320k", false,"","160k"},
++ {false,false, AV_CODEC_ID_AAC, "aac", "AAC-LC (Advanced Audio Codec)", "64k#80k#96k#112k#128k#144k#160k#192k#224k#256k#320k#384k", true,"224k#256k#320k#384k#448k#500k#512k#576k#640k","160k"},
++ {false,false, AV_CODEC_ID_AC3, "ac3", "AC3 (Doly Digital)", "64k#80k#96k#112k#128k#144k#160k#192k#224k#256k#320k#384k", true,"224k#256k#320k#384k#448k#500k#512k#576k#640k","160k"},
++ {false,false, AV_CODEC_ID_VORBIS, "vorbis", "OGG (Vorbis)", "64k#96k#128k#192k#256k#500k", false,"","128k"},
++ {false,false, AV_CODEC_ID_MP2, "mp2", "MP2 (MPEG-1 Audio Layer II)", "64k#96k#128k#192k#256k#500k", false,"","128k"},
++ {false,false, AV_CODEC_ID_AMR_WB, "libvo_amrwbenc", "Adaptive Multi-Rate (AMR) Wide-Band", "6.60k#8.85k#12.65k#14.25k#15.85k#18.25k#19.85k#23.05k#23.85k", false,"","6.60k"},
++ {false,false, AV_CODEC_ID_FLAC, "flac", "FLAC (Free Lossless Audio Codec)", "", false,"",""},
++ {false,false, AV_CODEC_ID_AMR_NB, "libopencore_amrnb", "Adaptive Multi-Rate (AMR) NB", "", false,"",""},
++ {false,false, AV_CODEC_ID_WMAV1, "wmav1", "Windows Media Audio 1", "", false,"",""},
++ {false,false, AV_CODEC_ID_WMAV2, "wmav2", "Windows Media Audio 2", "", false,"",""}
+ };
+
+ struct sFormatDef FORMATDEF[NBR_FORMATDEF]={
+--- a/src/engine/cDeviceModelDef.h
++++ b/src/engine/cDeviceModelDef.h
+@@ -66,8 +66,9 @@ extern "C" {
+
+ #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54,60,0)
+ #include "libavutil/samplefmt.h"
+- #include "libswresample/swresample.h"
++ #include <libavresample/avresample.h>
+ #endif
++ #include <libavutil/opt.h>
+
+ // include for libavfilter
+ #if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,13,0) // For all
+@@ -92,9 +93,6 @@ extern "C" {
+ #include "libavfilter/avcodec.h"
+ #else // From 3.1
+ //#define AUDIO_LIBAVFILTER
+- #if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(3,17,0) // From 3.17
+- #include "libavfilter/avcodec.h"
+- #endif
+ #include "libavfilter/buffersink.h"
+ #include "libavfilter/buffersrc.h"
+ #endif
+--- a/src/ffDiaporama/DlgRenderVideo/DlgRenderVideo.cpp
++++ b/src/ffDiaporama/DlgRenderVideo/DlgRenderVideo.cpp
+@@ -736,25 +736,25 @@ bool DlgRenderVideo::ComputeAudioPart(QS
+
+ switch (AUDIOCODECDEF[AudioCodecIndex].Codec_id) {
+
+- case CODEC_ID_PCM_S16LE:
++ case AV_CODEC_ID_PCM_S16LE:
+ aCodec=QString("-acodec copy"); // Use copy instead of -acodec pcm_s16le because we generate temp.wav as pcm_s16le !
+ break;
+
+- case CODEC_ID_FLAC:
++ case AV_CODEC_ID_FLAC:
+ aCodec=QString("-acodec flac");
+ break;
+
+- case CODEC_ID_AC3:
++ case AV_CODEC_ID_AC3:
+ if (isAVCONV) aCodec=QString("-acodec %1 -sample_fmt:1 flt -ab %2").arg(AUDIOCODECDEF[AudioCodecIndex].ShortName).arg(AudioBitRate);
+ else aCodec=QString("-acodec %1 -ab %2").arg(AUDIOCODECDEF[AudioCodecIndex].ShortName).arg(AudioBitRate);
+ break;
+
+- case CODEC_ID_MP2:
+- case CODEC_ID_MP3:
+- case CODEC_ID_AAC:
+- case CODEC_ID_VORBIS:
+- case CODEC_ID_AMR_WB:
+- case CODEC_ID_AMR_NB:
++ case AV_CODEC_ID_MP2:
++ case AV_CODEC_ID_MP3:
++ case AV_CODEC_ID_AAC:
++ case AV_CODEC_ID_VORBIS:
++ case AV_CODEC_ID_AMR_WB:
++ case AV_CODEC_ID_AMR_NB:
+ aCodec=QString("-acodec %1 -ab %2").arg(AUDIOCODECDEF[AudioCodecIndex].ShortName).arg(AudioBitRate);
+ break;
+
+@@ -763,10 +763,10 @@ bool DlgRenderVideo::ComputeAudioPart(QS
+ Continue=false;
+ break;
+ }
+- if (AUDIOCODECDEF[AudioCodecIndex].Codec_id==CODEC_ID_AMR_WB) {
++ if (AUDIOCODECDEF[AudioCodecIndex].Codec_id==AV_CODEC_ID_AMR_WB) {
+ AudioChannels=1;
+ AudioFrequency=16000;
+- } else if (AUDIOCODECDEF[AudioCodecIndex].Codec_id==CODEC_ID_AMR_NB) {
++ } else if (AUDIOCODECDEF[AudioCodecIndex].Codec_id==AV_CODEC_ID_AMR_NB) {
+ AudioChannels=1;
+ AudioFrequency=8000;
+ }
+@@ -988,7 +988,7 @@ void DlgRenderVideo::DoAccept() {
+ AudioCodec=AUDIOCODECDEF[AudioCodecIndex].ShortName;
+
+ // Special case adjustment
+- if (AUDIOCODECDEF[AudioCodecIndex].Codec_id==CODEC_ID_PCM_S16LE) AudioBitRate=1536; // Special case for WAV
++ if (AUDIOCODECDEF[AudioCodecIndex].Codec_id==AV_CODEC_ID_PCM_S16LE) AudioBitRate=1536; // Special case for WAV
+ if (QString(FORMATDEF[OutputFileFormat].ShortName)==QString("flv")) AudioFrequency=44100; // Special case for FLV
+ if (QString(FORMATDEF[OutputFileFormat].ShortName)==QString("3gp")) AudioFrequency=8000; // Special case for AMRNB
+
+@@ -1118,7 +1118,7 @@ void DlgRenderVideo::DoAccept() {
+ QString("%1 -aspect %2:%3").arg(aCodec).arg(GeoW).arg(GeoH);
+
+ // Activate multithreading support if getCpuCount()>1 and codec is h264 or VP8
+- if (((getCpuCount()-1)>1)&&((VIDEOCODECDEF[VideoCodecIndex].Codec_id==CODEC_ID_H264)||(VIDEOCODECDEF[VideoCodecIndex].Codec_id==CODEC_ID_VP8)))
++ if (((getCpuCount()-1)>1)&&((VIDEOCODECDEF[VideoCodecIndex].Codec_id==AV_CODEC_ID_H264)||(VIDEOCODECDEF[VideoCodecIndex].Codec_id==AV_CODEC_ID_VP8)))
+ ffmpegCommand=ffmpegCommand+" -threads "+QString("%1").arg(getCpuCount()-1);
+
+ ffmpegCommand=ffmpegCommand+" \""+OutputFileName+"\"";
+@@ -1334,7 +1334,7 @@ bool DlgRenderVideo::WriteTempAudioFile(
+ if (Fmt==NULL) {
+ CustomMessageBox(this,QMessageBox::Critical,QApplication::translate("DlgRenderVideo","Render video"),"Error creating temporary wav file!");
+ Continue=false;
+- } else Fmt->audio_codec=CODEC_ID_PCM_S16LE;
++ } else Fmt->audio_codec=AV_CODEC_ID_PCM_S16LE;
+
+ // allocate the output media context
+ if (Continue) {
+@@ -1371,12 +1371,12 @@ bool DlgRenderVideo::WriteTempAudioFile(
+ #else
+ avcodec_get_context_defaults3(WriteWAV.AudioCodecContext,NULL); // Fill stream with default values
+ #endif
+- AudioCodec=avcodec_find_encoder(CODEC_ID_PCM_S16LE); // Open Audio encoder
++ AudioCodec=avcodec_find_encoder(AV_CODEC_ID_PCM_S16LE); // Open Audio encoder
+ if (!AudioCodec) {
+ CustomMessageBox(this,QMessageBox::Critical,QApplication::translate("DlgRenderVideo","Render video"),"Audio codec not found!");
+ Continue=false;
+ } else {
+- WriteWAV.AudioCodecContext->codec_id = CODEC_ID_PCM_S16LE;
++ WriteWAV.AudioCodecContext->codec_id = AV_CODEC_ID_PCM_S16LE;
+ WriteWAV.AudioCodecContext->codec_type = AVMEDIA_TYPE_AUDIO;
+ WriteWAV.AudioCodecContext->sample_fmt = AV_SAMPLE_FMT_S16;
+ WriteWAV.AudioCodecContext->sample_rate = 48000;
+@@ -1388,7 +1388,7 @@ bool DlgRenderVideo::WriteTempAudioFile(
+ WriteWAV.AudioCodecContext->channels = 2;
+ WriteWAV.AudioCodecContext->channel_layout = AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT; //CH_LAYOUT_STEREO;
+ WriteWAV.AudioCodecContext->time_base = (AVRational){1,WriteWAV.AudioCodecContext->sample_rate};
+- WriteWAV.AudioStream->r_frame_rate = WriteWAV.AudioCodecContext->time_base;
++ WriteWAV.AudioStream->avg_frame_rate = WriteWAV.AudioCodecContext->time_base;
+ WriteWAV.AudioStream->time_base = WriteWAV.AudioCodecContext->time_base;
+ WriteWAV.AudioCodecContext->flags |= CODEC_FLAG_GLOBAL_HEADER;
+
+@@ -1557,8 +1557,6 @@ void DlgRenderVideo::WriteRenderedMusicT
+ memset(PacketSound,0,WriteWAV->RenderMusic.SoundPacketSize);
+ }
+
+- #if FF_API_OLD_ENCODE_AUDIO
+-
+ // Init frame
+ AVFrame *frame=avcodec_alloc_frame();
+ if (frame->extended_data!=frame->data) {
+@@ -1605,32 +1603,6 @@ void DlgRenderVideo::WriteRenderedMusicT
+ }
+ av_free(frame);
+
+- #else
+- int out_size= avcodec_encode_audio(WriteWAV->AudioCodecContext,WriteWAV->audio_outbuf,WriteWAV->RenderMusic.SoundPacketSize,(short int *)PacketSound);
+- if (out_size>0) {
+- AVPacket pkt;
+- av_init_packet(&pkt);
+-
+- if ((WriteWAV->AudioCodecContext->coded_frame!=NULL)&&(WriteWAV->AudioCodecContext->coded_frame->pts!=int64_t(INT64_C(0x8000000000000000))))
+- pkt.pts=av_rescale_q(WriteWAV->AudioCodecContext->coded_frame->pts,WriteWAV->AudioCodecContext->time_base,WriteWAV->AudioStream->time_base);
+-
+- if ((WriteWAV->AudioCodecContext->coded_frame!=NULL)&&(WriteWAV->AudioCodecContext->coded_frame->key_frame))
+- pkt.flags|=AV_PKT_FLAG_KEY;
+-
+- pkt.stream_index=WriteWAV->AudioStream->index;
+- pkt.data =WriteWAV->audio_outbuf;
+- pkt.size =out_size;
+-
+- // write the compressed frame in the media file
+- if (av_interleaved_write_frame(WriteWAV->OutputFormatContext,&pkt)!=0) {
+- CustomMessageBox(this,QMessageBox::Critical,QApplication::translate("DlgRenderVideo","Render video"),"Error while writing audio frame!");
+- *Continue=false;
+- }
+- } else if (out_size<0) {
+- CustomMessageBox(this,QMessageBox::Critical,QApplication::translate("DlgRenderVideo","Render video"),"Error encoding sound!");
+- *Continue=false;
+- }
+- #endif
+ av_free(PacketSound);
+ }
+ }
+--- a/src/common.pri
++++ b/src/common.pri
+@@ -78,4 +78,4 @@ win32 {
+ #---- Libs for windows and linux
+ LIBS += -ltag #------ TAGlib
+ LIBS += -lSDL #------ SDL
+-LIBS += -lavformat -lavcodec -lavutil -lswscale -lavfilter #------ libav lib link
++LIBS += -lavformat -lavcodec -lavutil -lswscale -lavfilter -lavresample #------ libav lib link
diff --git a/debian/patches/series b/debian/patches/series
index 131f376..48238b7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
fix_hardening_flags.patch
libav_0.9.patch
+libav10.patch
--
ffdiaporama packaging
More information about the pkg-multimedia-commits
mailing list