diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2023-09-02 23:04:07 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2023-09-02 23:07:50 +0200 |
commit | a0373a9a7c0cb43da6f772687568065b281c953f (patch) | |
tree | 1a85161b815cf599994346901e76ae7a312f9d90 /media-video | |
parent | net-print/cnijfilter2: add 6.60 (diff) | |
download | gentoo-a0373a9a7c0cb43da6f772687568065b281c953f.tar.gz gentoo-a0373a9a7c0cb43da6f772687568065b281c953f.tar.bz2 gentoo-a0373a9a7c0cb43da6f772687568065b281c953f.zip |
media-video/subtitlecomposer: Backports, fix runtime bug w/ >=ffmpeg-6
Closes: https://bugs.gentoo.org/913475
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'media-video')
6 files changed, 258 insertions, 0 deletions
diff --git a/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-changingaudio-crashfix.patch b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-changingaudio-crashfix.patch new file mode 100644 index 000000000000..be580af101d5 --- /dev/null +++ b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-changingaudio-crashfix.patch @@ -0,0 +1,67 @@ +From 88a6cf4e4aaa58229b9b07d66c2abd264dfbc2f1 Mon Sep 17 00:00:00 2001 +From: Mladen Milinkovic <maxrd2@smoothware.net> +Date: Fri, 17 Jun 2022 21:34:20 +0200 +Subject: [PATCH] Fix deadlock/crash while changing audio stream on + paused/stopped media #71 + +--- + src/videoplayer/backend/audiodecoder.cpp | 2 +- + src/videoplayer/backend/decoder.cpp | 1 + + src/videoplayer/backend/ffplayer.cpp | 2 ++ + src/videoplayer/videoplayer.cpp | 2 ++ + 4 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/videoplayer/backend/audiodecoder.cpp b/src/videoplayer/backend/audiodecoder.cpp +index d3d13e78..9c7ee1fc 100644 +--- a/src/videoplayer/backend/audiodecoder.cpp ++++ b/src/videoplayer/backend/audiodecoder.cpp +@@ -499,7 +499,7 @@ AudioDecoder::run() + // bytes needed for 100ms of audio + const ALint hwMinBytes = m_vs->audClk.speed() * m_fmtTgt.bytesPerSec * .100; + +- while(!m_vs->abortRequested) { ++ while(!m_vs->abortRequested && !isInterruptionRequested()) { + ALint hwBufOffset = 0; + alGetSourcei(m_alSrc, AL_BYTE_OFFSET, &hwBufOffset); + if(!std::isnan(af->pts)) { +diff --git a/src/videoplayer/backend/decoder.cpp b/src/videoplayer/backend/decoder.cpp +index 79b1ad7a..8a69d918 100644 +--- a/src/videoplayer/backend/decoder.cpp ++++ b/src/videoplayer/backend/decoder.cpp +@@ -155,6 +155,7 @@ Decoder::abort() + m_queue->abort(); + if(m_frameQueue) + m_frameQueue->signal(); ++ requestInterruption(); + wait(); + m_queue->flush(); + } +diff --git a/src/videoplayer/backend/ffplayer.cpp b/src/videoplayer/backend/ffplayer.cpp +index 88288285..7b26e4a4 100644 +--- a/src/videoplayer/backend/ffplayer.cpp ++++ b/src/videoplayer/backend/ffplayer.cpp +@@ -288,6 +288,8 @@ FFPlayer::activeAudioStream() + void + FFPlayer::activeAudioStream(int streamIndex) + { ++ if(!m_vs) ++ return; + streamIndex = streamIndex < 0 ? -1 : m_vs->demuxer->absoluteStreamIndex(AVMEDIA_TYPE_AUDIO, streamIndex); + m_vs->demuxer->selectStream(AVMEDIA_TYPE_AUDIO, streamIndex); + } +diff --git a/src/videoplayer/videoplayer.cpp b/src/videoplayer/videoplayer.cpp +index 0307ce7d..a42babe5 100644 +--- a/src/videoplayer/videoplayer.cpp ++++ b/src/videoplayer/videoplayer.cpp +@@ -301,6 +301,8 @@ VideoPlayer::setupNotifications() + + //connect(m_player, &FFPlayer::videoStreamsChanged, this, [this](const QStringList &streams){}); + connect(m_player, &FFPlayer::audioStreamsChanged, this, [this](const QStringList &streams){ ++ if(m_activeAudioStream >= 0) ++ m_player->activeAudioStream(m_activeAudioStream); + emit audioStreamsChanged(m_audioStreams = streams); + emit activeAudioStreamChanged(m_activeAudioStream = m_player->activeAudioStream()); + }); +-- +GitLab + diff --git a/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-ffmpeg6-3.patch b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-ffmpeg6-3.patch new file mode 100644 index 000000000000..2887f179afd1 --- /dev/null +++ b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-ffmpeg6-3.patch @@ -0,0 +1,32 @@ +From d8f9797d9c0d45fa9f4402f79c539544b74d2cc7 Mon Sep 17 00:00:00 2001 +From: Mladen Milinkovic <maxrd2@smoothware.net> +Date: Fri, 1 Apr 2022 08:35:17 +0200 +Subject: [PATCH] VideoPlayer: Fix usage of deprecated/removed AVCodec option + #68 + +AVCodecContext.refcounted_frames was useful for deprecated API only +(avcodec_decode_video2/avcodec_decode_audio4). The new decode APIs +(avcodec_send_packet/avcodec_receive_frame) always work with reference +counted frames + +https://github.com/FFmpeg/FFmpeg/commit/b1cf151c4dfdbd049cd41863b4e0cde927585e17 +--- + src/videoplayer/backend/streamdemuxer.cpp | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/videoplayer/backend/streamdemuxer.cpp b/src/videoplayer/backend/streamdemuxer.cpp +index e8320ea0..7173306f 100644 +--- a/src/videoplayer/backend/streamdemuxer.cpp ++++ b/src/videoplayer/backend/streamdemuxer.cpp +@@ -286,8 +286,6 @@ StreamDemuxer::componentOpen(int streamIndex) + av_dict_set(&opts, "threads", "auto", 0); + if(stream_lowres) + av_dict_set_int(&opts, "lowres", stream_lowres, 0); +- if(avCtx->codec_type == AVMEDIA_TYPE_VIDEO || avCtx->codec_type == AVMEDIA_TYPE_AUDIO) +- av_dict_set(&opts, "refcounted_frames", "1", 0); + if((ret = avcodec_open2(avCtx, codec, &opts)) < 0) { + goto fail; + } +-- +GitLab + diff --git a/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-nullptr-deref.patch b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-nullptr-deref.patch new file mode 100644 index 000000000000..d6417179d436 --- /dev/null +++ b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-nullptr-deref.patch @@ -0,0 +1,25 @@ +From c94e4dc1362b9ac03cddb9def913ea6728875fe2 Mon Sep 17 00:00:00 2001 +From: Mladen Milinkovic <maxrd2@smoothware.net> +Date: Sun, 18 Sep 2022 23:09:17 +0200 +Subject: [PATCH] Fixed possible null pointer deref + +--- + src/videoplayer/backend/streamdemuxer.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/videoplayer/backend/streamdemuxer.cpp b/src/videoplayer/backend/streamdemuxer.cpp +index d15cf9f4..4ae4171d 100644 +--- a/src/videoplayer/backend/streamdemuxer.cpp ++++ b/src/videoplayer/backend/streamdemuxer.cpp +@@ -45,7 +45,7 @@ isRealTime(AVFormatContext *s) + #else + const char *url = s->url; + #endif +- if(s->pb && (!strncmp(url, "rtp:", 4) || !strncmp(url, "udp:", 4))) ++ if(s->pb && url && (!strncmp(url, "rtp:", 4) || !strncmp(url, "udp:", 4))) + return 1; + return 0; + } +-- +GitLab + diff --git a/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-subtitle-crashfix.patch b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-subtitle-crashfix.patch new file mode 100644 index 000000000000..4502d7254f9b --- /dev/null +++ b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-subtitle-crashfix.patch @@ -0,0 +1,25 @@ +From 09e5d80286276d4683c944dfa0cddda3479006c0 Mon Sep 17 00:00:00 2001 +From: Mladen Milinkovic <maxrd2@smoothware.net> +Date: Thu, 19 Jan 2023 18:39:31 +0100 +Subject: [PATCH] Subtitle: fixed crash in splitLines() + +--- + src/core/subtitle.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/subtitle.cpp b/src/core/subtitle.cpp +index d3da532d..3359062e 100644 +--- a/src/core/subtitle.cpp ++++ b/src/core/subtitle.cpp +@@ -541,7 +541,7 @@ Subtitle::splitLines(const RangeList &ranges) + c->insertText(QString(QChar::LineFeed)); + return true; + } +- if(text.at(j) == QChar::Space) { ++ if(j < len && text.at(j) == QChar::Space) { + c->movePosition(QTextCursor::Start); + c->movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, j); + c->movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor); +-- +GitLab + diff --git a/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-vobsub-crashfix.patch b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-vobsub-crashfix.patch new file mode 100644 index 000000000000..20c5835ba971 --- /dev/null +++ b/media-video/subtitlecomposer/files/subtitlecomposer-0.7.1-vobsub-crashfix.patch @@ -0,0 +1,45 @@ +From 78553af05ba97da0920f7cabd281503bd4ca484a Mon Sep 17 00:00:00 2001 +From: Mladen Milinkovic <maxrd2@smoothware.net> +Date: Wed, 23 Nov 2022 15:47:56 +0100 +Subject: [PATCH] VobSub: fixed crash when moving to previous image + +Do not delete lines on temporary Subtitle that is shown in LinesWidget. +SubtitleLine is deleted immediately, while LinesWidget wants to repaint +before line reference is removed from its list model. + +https://bugs.kde.org/show_bug.cgi?id=462156 +--- + src/formats/vobsub/vobsubinputprocessdialog.cpp | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/formats/vobsub/vobsubinputprocessdialog.cpp b/src/formats/vobsub/vobsubinputprocessdialog.cpp +index ac54b552..2ba61550 100644 +--- a/src/formats/vobsub/vobsubinputprocessdialog.cpp ++++ b/src/formats/vobsub/vobsubinputprocessdialog.cpp +@@ -697,9 +697,12 @@ VobSubInputProcessDialog::processNextPiece() + piecePrev = piece; + } + +- SubtitleLine *l = new SubtitleLine((*m_frameCurrent)->subShowTime, (*m_frameCurrent)->subHideTime); ++ SubtitleLine *l = m_subtitle->line((*m_frameCurrent)->index); ++ if(!l) { ++ l = new SubtitleLine((*m_frameCurrent)->subShowTime, (*m_frameCurrent)->subHideTime); ++ m_subtitle->insertLine(l); ++ } + l->primaryDoc()->setPlainText(subText); +- m_subtitle->insertLine(l); + + ui->grpText->setDisabled(true); + ui->grpNavButtons->setDisabled(true); +@@ -809,8 +812,6 @@ VobSubInputProcessDialog::onPrevImageClicked() + return; + + --m_frameCurrent; +- if(m_subtitle->lastIndex() >= 0) +- m_subtitle->removeLines(RangeList(Range(m_subtitle->lastIndex())), Both); + + ui->progressBar->setValue((*m_frameCurrent)->index + 1); + +-- +GitLab + diff --git a/media-video/subtitlecomposer/subtitlecomposer-0.7.1-r3.ebuild b/media-video/subtitlecomposer/subtitlecomposer-0.7.1-r3.ebuild new file mode 100644 index 000000000000..6be3556ee1b8 --- /dev/null +++ b/media-video/subtitlecomposer/subtitlecomposer-0.7.1-r3.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ECM_TEST="forceoptional" +KFMIN=5.106.0 +QTMIN=5.15.9 +inherit ecm kde.org + +DESCRIPTION="Text-based subtitles editor" +HOMEPAGE="https://subtitlecomposer.kde.org/" +PATCHSET="${P}-patchset-1" +SRC_URI="mirror://kde/stable/${PN}/${P}.tar.xz + https://dev.gentoo.org/~asturm/distfiles/${PATCHSET}.tar.xz" + +LICENSE="GPL-2" +SLOT="5" +KEYWORDS="~amd64 ~x86" +IUSE="unicode" + +DEPEND=" + >=dev-qt/qtdeclarative-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + >=kde-frameworks/kcodecs-${KFMIN}:5 + >=kde-frameworks/kcompletion-${KFMIN}:5 + >=kde-frameworks/kconfig-${KFMIN}:5 + >=kde-frameworks/kconfigwidgets-${KFMIN}:5 + >=kde-frameworks/kcoreaddons-${KFMIN}:5 + >=kde-frameworks/ki18n-${KFMIN}:5 + >=kde-frameworks/kio-${KFMIN}:5 + >=kde-frameworks/ktextwidgets-${KFMIN}:5 + >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 + >=kde-frameworks/kxmlgui-${KFMIN}:5 + >=kde-frameworks/sonnet-${KFMIN}:5 + media-libs/openal + media-video/ffmpeg:0= + unicode? ( dev-libs/icu:= ) +" +RDEPEND="${DEPEND}" +BDEPEND=" + sys-devel/gettext + virtual/pkgconfig +" + +PATCHES=( + "${WORKDIR}/${PATCHSET}/${P}-tests-optional.patch" + "${WORKDIR}/${PATCHSET}/${P}-gles-support.patch" # bug 820035 + "${WORKDIR}/${PATCHSET}/${P}-ffmpeg-5.patch" # bug 834416 + "${WORKDIR}/${PATCHSET}/${P}-replace-kross-w-qjsengine.patch" # bug 755956 + "${FILESDIR}"/${P}-nullptr-deref.patch + "${FILESDIR}"/${P}-ffmpeg6-{1,2,3}.patch # bugs 910048, 913475 + "${FILESDIR}"/${P}-{changingaudio,subtitle,vobsub}-crashfix.patch # KDE-bug 462156 +) + +src_configure() { + local mycmakeargs=( + -DCMAKE_DISABLE_FIND_PACKAGE_PocketSphinx=ON # bugs 616706, 610434 + $(cmake_use_find_package unicode ICU) + ) + + ecm_src_configure +} |