Hello community, here is the log from the commit of package k3b for openSUSE:Factory checked in at 2016-07-03 12:26:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/k3b (Old) and /work/SRC/openSUSE:Factory/.k3b.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "k3b" Changes: -------- --- /work/SRC/openSUSE:Factory/k3b/k3b.changes 2016-05-31 12:10:37.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.k3b.new/k3b.changes 2016-07-03 12:26:45.000000000 +0200 @@ -1,0 +2,6 @@ +Sat Jun 25 10:48:54 UTC 2016 - [email protected] + +- Add k3b-ffmpeg3.patch from arch linux to fix build against + ffmpeg 3x + +------------------------------------------------------------------- New: ---- k3b-ffmpeg3.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ k3b.spec ++++++ --- /var/tmp/diff_new_pack.K528ox/_old 2016-07-03 12:26:46.000000000 +0200 +++ /var/tmp/diff_new_pack.K528ox/_new 2016-07-03 12:26:46.000000000 +0200 @@ -32,6 +32,9 @@ Patch2: fix-dvd-transcoding.patch # PATCH-FIX-UPSTREAM k3b-2.0.3-gcc6.patch [email protected] -- Fix build with GCC 6 Patch3: k3b-2.0.3-gcc6.patch +# PATCH-FIX arch linux k3b-ffmpeg3.patch - fix build with ffmpeg 3x abi +Patch4: k3b-ffmpeg3.patch + BuildRequires: fdupes BuildRequires: flac-devel BuildRequires: libdvdread-devel @@ -94,6 +97,7 @@ %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 %build CXXFLAGS="%{optflags} -fno-strict-aliasing" ++++++ k3b-ffmpeg3.patch ++++++ >From 52d3d64863d2fab4128f524870851f18f5cae1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Old=C5=99ich=20Jedli=C4=8Dka?= <[email protected]> Date: Sat, 14 Feb 2015 15:31:07 +0100 Subject: [PATCH] Fixed compilation with newer ffmpeg/libav. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Oldřich Jedlička <[email protected]> --- plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp | 60 ++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp b/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp index 5451fd3..2f80fd6 100644 --- a/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp +++ b/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp @@ -86,8 +86,12 @@ public: K3b::Msf length; // for decoding. ffmpeg requires 16-byte alignment. +#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4 + ::AVFrame* frame; +#else char outputBuffer[AVCODEC_MAX_AUDIO_FRAME_SIZE + 15]; char* alignedOutputBuffer; +#endif char* outputBufferPos; int outputBufferSize; ::AVPacket packet; @@ -102,14 +106,29 @@ K3bFFMpegFile::K3bFFMpegFile( const QString& filename ) d = new Private; d->formatContext = 0; d->codec = 0; +#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4 +# if LIBAVCODEC_BUILD < AV_VERSION_INT(55,28,1) + d->frame = avcodec_alloc_frame(); +# else + d->frame = av_frame_alloc(); +# endif +#else int offset = 0x10 - (reinterpret_cast<intptr_t>(&d->outputBuffer) & 0xf); d->alignedOutputBuffer = &d->outputBuffer[offset]; +#endif } K3bFFMpegFile::~K3bFFMpegFile() { close(); +#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4 +# if LIBAVCODEC_BUILD < AV_VERSION_INT(55,28,1) + av_free(d->frame); +# else + av_frame_free(&d->frame); +# endif +#endif delete d; } @@ -326,26 +345,36 @@ int K3bFFMpegFile::fillOutputBuffer() return 0; } +#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4 + int gotFrame = 0; + int len = ::avcodec_decode_audio4( +#else d->outputBufferPos = d->alignedOutputBuffer; d->outputBufferSize = AVCODEC_MAX_AUDIO_FRAME_SIZE; - -#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO3 +# ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO3 int len = ::avcodec_decode_audio3( -#else -# ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO2 - int len = ::avcodec_decode_audio2( # else +# ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO2 + int len = ::avcodec_decode_audio2( +# else int len = ::avcodec_decode_audio( +# endif # endif #endif FFMPEG_CODEC(d->formatContext->streams[0]), +#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4 + d->frame, + &gotFrame, + &d->packet ); +#else (short*)d->alignedOutputBuffer, &d->outputBufferSize, -#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO3 +# ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO3 &d->packet ); -#else +# else d->packetData, d->packetSize ); +# endif #endif if( d->packetSize <= 0 || len < 0 ) @@ -355,6 +384,17 @@ int K3bFFMpegFile::fillOutputBuffer() return -1; } +#ifdef HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4 + if ( gotFrame ) { + d->outputBufferSize = ::av_samples_get_buffer_size( + NULL, + FFMPEG_CODEC(d->formatContext->streams[0])->channels, + d->frame->nb_samples, + FFMPEG_CODEC(d->formatContext->streams[0])->sample_fmt, + 1 ); + d->outputBufferPos = reinterpret_cast<char*>( d->frame->data[0] ); + } +#endif d->packetSize -= len; d->packetData += len; } @@ -420,9 +460,9 @@ K3bFFMpegFile* K3bFFMpegWrapper::open( const QString& filename ) const // mp3 being one of them sadly. Most importantly: allow the libsndfile decoder to do // its thing. // - if( file->type() == CODEC_ID_WMAV1 || - file->type() == CODEC_ID_WMAV2 || - file->type() == CODEC_ID_AAC ) + if( file->type() == AV_CODEC_ID_WMAV1 || + file->type() == AV_CODEC_ID_WMAV2 || + file->type() == AV_CODEC_ID_AAC ) #endif return file; } -- 2.0.5
