Accepting request 404780 from KDE:Extra
1 OBS-URL: https://build.opensuse.org/request/show/404780 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/k3b?expand=0&rev=65
This commit is contained in:
parent
0d004ab90a
commit
ce99f0dd31
138
k3b-ffmpeg3.patch
Normal file
138
k3b-ffmpeg3.patch
Normal file
@ -0,0 +1,138 @@
|
||||
From 52d3d64863d2fab4128f524870851f18f5cae1fc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Old=C5=99ich=20Jedli=C4=8Dka?= <oldium.pro@seznam.cz>
|
||||
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 <oldium.pro@seznam.cz>
|
||||
---
|
||||
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
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Jun 25 10:48:54 UTC 2016 - davejplater@gmail.com
|
||||
|
||||
- Add k3b-ffmpeg3.patch from arch linux to fix build against
|
||||
ffmpeg 3x
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 25 10:44:19 UTC 2016 - dimstar@opensuse.org
|
||||
|
||||
|
4
k3b.spec
4
k3b.spec
@ -32,6 +32,9 @@ Patch1: building-docs-once-is-enough.patch
|
||||
Patch2: fix-dvd-transcoding.patch
|
||||
# PATCH-FIX-UPSTREAM k3b-2.0.3-gcc6.patch dimstar@opensuse.org -- 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 @@ This package contain files needed for development with k3b.
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
|
||||
%build
|
||||
CXXFLAGS="%{optflags} -fno-strict-aliasing"
|
||||
|
Loading…
x
Reference in New Issue
Block a user