diff options
Diffstat (limited to 'media-sound/karlyriceditor/files/karlyriceditor-1.11-libav.patch')
-rw-r--r-- | media-sound/karlyriceditor/files/karlyriceditor-1.11-libav.patch | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/media-sound/karlyriceditor/files/karlyriceditor-1.11-libav.patch b/media-sound/karlyriceditor/files/karlyriceditor-1.11-libav.patch deleted file mode 100644 index 9ef67ad8d0e5..000000000000 --- a/media-sound/karlyriceditor/files/karlyriceditor-1.11-libav.patch +++ /dev/null @@ -1,320 +0,0 @@ -From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin@steghoefer.eu> -Date: Tue, 13 Nov 2012 20:19:11 +0100 -Subject: Add missing includes for libavutil -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Author: Martin Steghöfer <martin@steghoefer.eu> -Bug: https://sourceforge.net/tracker/?func=detail&aid=3512390&group_id=290648&atid=1229531 -Forwarded: not-needed - -Added includes necessary for the use of the function "av_rescale_q". -Forwarding to upstream not needed because an equivalent patch has already been -posted to upstream's bug tracker (see URL in the "Bug" field). ---- - src/audioplayerprivate.cpp | 3 +++ - src/ffmpegvideoencoder.cpp | 3 +++ - 2 files changed, 6 insertions(+) - -diff --git a/src/audioplayerprivate.cpp b/src/audioplayerprivate.cpp -index ffff90e..1b6b32d 100644 ---- a/src/audioplayerprivate.cpp -+++ b/src/audioplayerprivate.cpp -@@ -21,6 +21,9 @@ - - #include "audioplayer.h" - #include "audioplayerprivate.h" -+extern "C" { -+#include "libavutil/mathematics.h" -+} - #include <SDL/SDL.h> - - // SDL defines its own main() function in SDL_main. And so does Qt, so if we continue without -diff --git a/src/ffmpegvideoencoder.cpp b/src/ffmpegvideoencoder.cpp -index 5734d2e..49182b5 100644 ---- a/src/ffmpegvideoencoder.cpp -+++ b/src/ffmpegvideoencoder.cpp -@@ -28,6 +28,9 @@ - #include "videoencodingprofiles.h" - #include "audioplayer.h" - #include "audioplayerprivate.h" -+extern "C" { -+#include "libavutil/mathematics.h" -+} - - - #define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio -From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin@steghoefer.eu> -Date: Sat, 12 Apr 2014 15:19:48 +0200 -Subject: Fix compilation: FFmpeg/Libav -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Author: Martin Steghöfer <martin@steghoefer.eu> -Forwarded: not-needed - -The upstream developers compile Karlyriceditor against FFmpeg, but in Debian -there is only Libav available, whose API is slowly drifting away from -FFmpeg's. This patch adapts the code to several of those differences: -* The second parameters of "avformat_new_stream" is of non-const pointer - type, but the code tries to pass a const pointer to it. -* There is no AV_ROUND_PASS_MINMAX flag for the rounding parameter of - av_rescale_q_rnd in Libav. -* The member r_frame_rate is no longer present in AVStream. The recommended - replacement is avg_frame_rate. -* The enums CODEC_ID_MP3 and CODEC_ID_AC3 have been prefixed with AV_. -* The function avcodec_alloc_frame was removed in favor of av_frame_alloc. - The corresponding deallocation function is av_frame_free (not the generic - av_free). ---- - src/audioplayerprivate.cpp | 4 ++-- - src/ffmpegvideodecoder.cpp | 8 ++++---- - src/ffmpegvideoencoder.cpp | 32 ++++++++++++++++++++------------ - 3 files changed, 26 insertions(+), 18 deletions(-) - -diff --git a/src/audioplayerprivate.cpp b/src/audioplayerprivate.cpp -index 1b6b32d..a6536cd 100644 ---- a/src/audioplayerprivate.cpp -+++ b/src/audioplayerprivate.cpp -@@ -118,7 +118,7 @@ void AudioPlayerPrivate::close() - } - - if ( m_frame ) -- av_free( m_frame ); -+ av_frame_free( &m_frame ); - - m_frame = 0; - pFormatCtx = 0; -@@ -227,7 +227,7 @@ bool AudioPlayerPrivate::open( const QString& filename ) - } - - // Allocate the buffer -- m_frame = avcodec_alloc_frame(); -+ m_frame = av_frame_alloc(); - - if ( !m_frame ) - { -diff --git a/src/ffmpegvideodecoder.cpp b/src/ffmpegvideodecoder.cpp -index 2ec5969..7820f72 100644 ---- a/src/ffmpegvideodecoder.cpp -+++ b/src/ffmpegvideodecoder.cpp -@@ -113,8 +113,8 @@ bool FFMpegVideoDecoder::openFile( const QString& filename, unsigned int seekto - if ( d->videoStream == -1 ) - return false; // Didn't find a video stream - -- d->m_fps_den = d->pFormatCtx->streams[d->videoStream]->r_frame_rate.den; -- d->m_fps_num = d->pFormatCtx->streams[d->videoStream]->r_frame_rate.num; -+ d->m_fps_den = d->pFormatCtx->streams[d->videoStream]->avg_frame_rate.den; -+ d->m_fps_num = d->pFormatCtx->streams[d->videoStream]->avg_frame_rate.num; - - if ( d->m_fps_den == 60000 ) - d->m_fps_den = 30000; -@@ -139,10 +139,10 @@ bool FFMpegVideoDecoder::openFile( const QString& filename, unsigned int seekto - } - - // Allocate video frame -- d->pFrame = avcodec_alloc_frame(); -+ d->pFrame = av_frame_alloc(); - - // Allocate an AVFrame structure -- d->pFrameRGB = avcodec_alloc_frame(); -+ d->pFrameRGB = av_frame_alloc(); - - if ( !d->pFrame || !d->pFrameRGB ) - { -diff --git a/src/ffmpegvideoencoder.cpp b/src/ffmpegvideoencoder.cpp -index 49182b5..bdf1730 100644 ---- a/src/ffmpegvideoencoder.cpp -+++ b/src/ffmpegvideoencoder.cpp -@@ -174,10 +174,10 @@ bool FFMpegVideoEncoderPriv::close() - delete[] audioSampleBuffer; - - if ( videoFrame ) -- av_free(videoFrame); -+ av_frame_free( &videoFrame ); - - if ( audioFrame ) -- av_free( audioFrame ); -+ av_frame_free( &audioFrame ); - - outputFormatCtx = 0; - outputFormat = 0; -@@ -383,7 +383,11 @@ av_log_set_level(AV_LOG_VERBOSE); - } - - // Create the video stream, index -- videoStream = avformat_new_stream( outputFormatCtx, videoCodecCtx->codec ); -+ // Use a block to keep the helper variable "codec" local to avoid conflict with gotos -+ { -+ AVCodec codec = *videoCodecCtx->codec; -+ videoStream = avformat_new_stream( outputFormatCtx, &codec ); -+ } - - if ( !videoStream ) - { -@@ -425,10 +429,10 @@ av_log_set_level(AV_LOG_VERBOSE); - // We're copying the stream - memcpy( newCtx, m_aplayer->aCodecCtx, sizeof(AVCodecContext) ); - -- if ( newCtx->block_align == 1 && newCtx->codec_id == CODEC_ID_MP3 ) -+ if ( newCtx->block_align == 1 && newCtx->codec_id == AV_CODEC_ID_MP3 ) - newCtx->block_align= 0; - -- if ( newCtx->codec_id == CODEC_ID_AC3 ) -+ if ( newCtx->codec_id == AV_CODEC_ID_AC3 ) - newCtx->block_align= 0; - } - else -@@ -443,7 +447,7 @@ av_log_set_level(AV_LOG_VERBOSE); - } - - // Hack to use the fixed AC3 codec if available -- if ( audioCodec->id == CODEC_ID_AC3 && avcodec_find_encoder_by_name( "ac3_fixed" ) ) -+ if ( audioCodec->id == AV_CODEC_ID_AC3 && avcodec_find_encoder_by_name( "ac3_fixed" ) ) - audioCodec = avcodec_find_encoder_by_name( "ac3_fixed" ); - - // Allocate the audio context -@@ -544,7 +548,7 @@ av_log_set_level(AV_LOG_VERBOSE); - goto cleanup; - } - -- audioFrame = avcodec_alloc_frame(); -+ audioFrame = av_frame_alloc(); - - if ( !audioFrame ) - { -@@ -573,10 +577,10 @@ av_log_set_level(AV_LOG_VERBOSE); - goto cleanup; - } - -- if ( audioStream->codec->block_align == 1 && audioStream->codec->codec_id == CODEC_ID_MP3 ) -+ if ( audioStream->codec->block_align == 1 && audioStream->codec->codec_id == AV_CODEC_ID_MP3 ) - audioStream->codec->block_align= 0; - -- if ( audioStream->codec->codec_id == CODEC_ID_AC3 ) -+ if ( audioStream->codec->codec_id == AV_CODEC_ID_AC3 ) - audioStream->codec->block_align= 0; - } - -@@ -595,7 +599,7 @@ av_log_set_level(AV_LOG_VERBOSE); - } - - // Allocate the YUV frame -- videoFrame = avcodec_alloc_frame(); -+ videoFrame = av_frame_alloc(); - - if ( !videoFrame ) - { -@@ -753,8 +757,12 @@ int FFMpegVideoEncoderPriv::encodeImage( const QImage &img, qint64 ) - pkt.flags |= AV_PKT_FLAG_KEY; - - // Rescale output packet timestamp values from codec to stream timebase -- pkt.pts = av_rescale_q_rnd( pkt.pts, audioCodecCtx->time_base, audioStream->time_base, (AVRounding) (AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX) ); -- pkt.dts = av_rescale_q_rnd( pkt.dts, audioCodecCtx->time_base, audioStream->time_base, (AVRounding) (AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX) ); -+ if ( pkt.pts != AV_NOPTS_VALUE ) { -+ pkt.pts = av_rescale_q_rnd( pkt.pts, audioCodecCtx->time_base, audioStream->time_base, AV_ROUND_NEAR_INF ); -+ } -+ if ( pkt.dts != AV_NOPTS_VALUE ) { -+ pkt.dts = av_rescale_q_rnd( pkt.dts, audioCodecCtx->time_base, audioStream->time_base, AV_ROUND_NEAR_INF ); -+ } - pkt.duration = av_rescale_q( pkt.duration, audioCodecCtx->time_base, audioStream->time_base); - - // And write the file -From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin@steghoefer.eu> -Date: Sat, 10 May 2014 01:04:56 +0200 -Subject: Fix segfault: AVFrame initialization (Libav/FFmpeg) -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Author: Martin Steghöfer <martin@steghoefer.eu> -Forwarded: not-needed - -The upstream developers compile Karlyriceditor against FFmpeg, but in Debian -there is only Libav available, whose API is slowly drifting away from -FFmpeg's. This patch adapts the code to one of those differences. -In Libav the function avcodec_get_frame_defaults cannot be called on a -completely uninitialized object. It expects at least some pointers inside -the struct to be initialized to NULL. Otherwise (depending on the random -pointer value) it may perform a free() on that random pointer. In Libav the -preferred way to initialize an AVFrame object is by calling -avcodec_alloc_frame(), which allocates the memory, initializes it to zero -and then calls avcodec_get_frame_defaults itself. This involves changing -"srcaudio" from a stack object to a heap object and freeing it after use. ---- - src/ffmpegvideoencoder.cpp | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/ffmpegvideoencoder.cpp b/src/ffmpegvideoencoder.cpp -index bdf1730..ccfdc7c 100644 ---- a/src/ffmpegvideoencoder.cpp -+++ b/src/ffmpegvideoencoder.cpp -@@ -685,12 +685,11 @@ int FFMpegVideoEncoderPriv::encodeImage( const QImage &img, qint64 ) - } - - // Initialize the frame -- AVFrame srcaudio; -- avcodec_get_frame_defaults( &srcaudio ); -+ AVFrame *srcaudio = av_frame_alloc(); - - // Decode the original audio into the srcaudio frame - int got_audio; -- err = avcodec_decode_audio4( m_aplayer->aCodecCtx, &srcaudio, &got_audio, &pkt ); -+ err = avcodec_decode_audio4( m_aplayer->aCodecCtx, srcaudio, &got_audio, &pkt ); - - if ( err < 0 ) - { -@@ -710,9 +709,9 @@ int FFMpegVideoEncoderPriv::encodeImage( const QImage &img, qint64 ) - NULL, - 0, - 0, -- srcaudio.data, -+ srcaudio->data, - 0, -- srcaudio.nb_samples )) < 0 ) -+ srcaudio->nb_samples )) < 0 ) - { - qWarning( "Error resampling decoded audio: %d", err ); - return -1; -@@ -777,6 +776,8 @@ int FFMpegVideoEncoderPriv::encodeImage( const QImage &img, qint64 ) - av_free_packet( &pkt ); - } - } -+ -+ av_frame_free( &srcaudio ); - } - } - -From: =?utf-8?q?Martin_Stegh=C3=B6fer?= <martin@steghoefer.eu> -Date: Sat, 10 May 2014 13:19:25 +0200 -Subject: Fix FP exception: Sample aspect ratio (Libav/FFmpeg) -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Author: Martin Steghöfer <martin@steghoefer.eu> -Forwarded: not-needed - -The upstream developers compile Karlyriceditor against FFmpeg, but in Debian -there is only Libav available, whose API is slowly drifting away from -FFmpeg's. This patch adapts the code to one of those differences. -In Libav sample aspect ratio of a AVStream object is not automatically -initialized to the one of its codec. So this has to be done manually. ---- - src/ffmpegvideoencoder.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/ffmpegvideoencoder.cpp b/src/ffmpegvideoencoder.cpp -index ccfdc7c..3122f2a 100644 ---- a/src/ffmpegvideoencoder.cpp -+++ b/src/ffmpegvideoencoder.cpp -@@ -399,6 +399,7 @@ av_log_set_level(AV_LOG_VERBOSE); - videoStream->codec = videoCodecCtx; - - // Set the video stream timebase if not set -+ videoStream->sample_aspect_ratio = videoCodecCtx->sample_aspect_ratio; - if ( videoStream->time_base.den == 0 ) - videoStream->time_base = videoCodecCtx->time_base; - |