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


Reply via email to