mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
xbmc: add backported patches to fix ASS/SSA subtitles with ffmpeg-2.4, this fixes non working or corrupted subtitles
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
19043dfe1d
commit
e6751e4b2e
@ -0,0 +1,36 @@
|
|||||||
|
From 60a8b445efe08c20d60c58fd54a18348bf00024c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rainer Hochecker <fernetmenta@online.de>
|
||||||
|
Date: Mon, 22 Sep 2014 18:18:09 +0200
|
||||||
|
Subject: [PATCH] dvdplayer: adapt matroshka ssa subs to ffmpeg 2.4 api change
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp | 1 +
|
||||||
|
xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp | 3 ++-
|
||||||
|
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp
|
||||||
|
index f8a5635..f688f95 100644
|
||||||
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp
|
||||||
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp
|
||||||
|
@@ -327,6 +327,7 @@ CDVDOverlayCodec* CDVDFactoryCodec::CreateOverlayCodec( CDVDStreamInfo &hint )
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AV_CODEC_ID_SSA:
|
||||||
|
+ case AV_CODEC_ID_ASS:
|
||||||
|
pCodec = OpenCodec(new CDVDOverlayCodecSSA(), hint, options);
|
||||||
|
if( pCodec ) return pCodec;
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp
|
||||||
|
index 03cda12..7cd6c2d 100644
|
||||||
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp
|
||||||
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp
|
||||||
|
@@ -45,7 +45,8 @@ CDVDOverlayCodecSSA::~CDVDOverlayCodecSSA()
|
||||||
|
|
||||||
|
bool CDVDOverlayCodecSSA::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options)
|
||||||
|
{
|
||||||
|
- if(hints.codec != AV_CODEC_ID_SSA)
|
||||||
|
+ if(hints.codec != AV_CODEC_ID_SSA &&
|
||||||
|
+ hints.codec != AV_CODEC_ID_ASS)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Dispose();
|
@ -0,0 +1,38 @@
|
|||||||
|
From 33ecbf84af6cd890ffb6a2562e8d4b6ce65729e5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rainer Hochecker <fernetmenta@online.de>
|
||||||
|
Date: Fri, 26 Sep 2014 07:50:56 +0200
|
||||||
|
Subject: [PATCH] dvdplayer: fix ass subs for AV_CODEC_ID_ASS after ffmpeg bump
|
||||||
|
to 2.4
|
||||||
|
|
||||||
|
---
|
||||||
|
xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp
|
||||||
|
index 7cd6c2d..755eb6b 100644
|
||||||
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp
|
||||||
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecSSA.cpp
|
||||||
|
@@ -71,6 +71,8 @@ int CDVDOverlayCodecSSA::Decode(DemuxPacket *pPacket)
|
||||||
|
return OC_ERROR;
|
||||||
|
|
||||||
|
double pts = pPacket->dts != DVD_NOPTS_VALUE ? pPacket->dts : pPacket->pts;
|
||||||
|
+ if (pts == DVD_NOPTS_VALUE)
|
||||||
|
+ pts = 0;
|
||||||
|
uint8_t *data = pPacket->pData;
|
||||||
|
int size = pPacket->iSize;
|
||||||
|
double duration = pPacket->duration;
|
||||||
|
@@ -118,6 +120,14 @@ int CDVDOverlayCodecSSA::Decode(DemuxPacket *pPacket)
|
||||||
|
else
|
||||||
|
m_libass->DecodeDemuxPkt((char*)data, size, pts, duration);
|
||||||
|
|
||||||
|
+ if (m_pOverlay && m_pOverlay->iPTSStartTime == pts)
|
||||||
|
+ {
|
||||||
|
+ if (m_pOverlay->iPTSStopTime < pts + duration)
|
||||||
|
+ m_pOverlay->iPTSStopTime = pts + duration;
|
||||||
|
+ m_output = true;
|
||||||
|
+ return OC_OVERLAY;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if(m_pOverlay)
|
||||||
|
{
|
||||||
|
/* there will only ever be one active, so we
|
Loading…
x
Reference in New Issue
Block a user