I'm contemplating updating my trusty 1.6.0 to the latest development version, but I can't seem to get DVB subtitles from old recordings to work.
Subtitles are shown corretly both when viewing live tv and when viewing new recordings, but when viewing old PES recordings VDR just says that no subtitles are available.
I'm using vanilla VDR and the xineliboutput plugin.
I searched through the archives and the only mention of a similar problem I could find is the one below, but unfortunately no solution.
----- Forwarded message from Josce josce@welho.com -----
Date: Fri, 06 Feb 2009 15:55:55 +0200 From: Josce josce@welho.com To: vdr@linuxtv.org Subject: [vdr] vdr 1.7.4 PTS on old recordings (PES)
I am using vdr 1.7.4 + reelbox plugins (svn today) + the patch provided by Ales Jurik, http://www.linuxtv.org/pipermail/vdr/2009-February/019504.html
I managed to get the STC working with the reelbox plugin, by setting audio to soundcard. When I watch live or play a recording made with vdr 1.7.4 the subtitles are displayed correctly. But when trying to play a recording made with vdr 1.6.0 (PES) I get no subtitles at all.
In void cDvbSubtitleConverter::Action(void) I added:
if (cDvbSubtitleBitmaps *sb = bitmaps->First()) { int64_t STC = cDevice::PrimaryDevice()->GetSTC(); + fprintf(stderr,"PTS: %lld STC: %lld timeout: %d\r\n", sb->Pts(), cDevice::PrimaryDevice()->GetSTC(), sb->Timeout());
With the vdr-1.7.4 recording I get:
PTS: 3453357752 STC: 3453096328 timeout: 5 PTS: 3453357752 STC: 3453107848 timeout: 5 PTS: 3453357752 STC: 3453115528 timeout: 5 PTS: 3453357752 STC: 3453127048 timeout: 5 PTS: 3453357752 STC: 3453134728 timeout: 5 PTS: 3453357752 STC: 3453146248 timeout: 5 PTS: 3453357752 STC: 3453157768 timeout: 5 PTS: 3453357752 STC: 3453165448 timeout: 5 PTS: 3453357752 STC: 3453173128 timeout: 5 PTS: 3453357752 STC: 3453184648 timeout: 5
With the vdr-1.6.0 recording I get:
PTS: 4194503 STC: 3346232463 timeout: 3 PTS: 4194455 STC: 3346240143 timeout: 3 PTS: 4194449 STC: 3346263183 timeout: 4 PTS: 4194455 STC: 3346282383 timeout: 4 PTS: 4194545 STC: 3346512783 timeout: 4 PTS: 4194436 STC: 3346812304 timeout: 6 PTS: 4194439 STC: 3347223184 timeout: 4
Regards,
Josce
_______________________________________________ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
----- End forwarded message -----
On Tue, 6 Oct 2009, jjtt@mbnet.fi wrote:
I searched through the archives and the only mention of a similar problem I could find is the one below, but unfortunately no solution.
I debugged this a while ago and the problem is that the difference of PTS and STC is way off in old PES recordings and therefore VDR discards all subtitles. I wasn't keen enough to fix it, so if somebody has plenty of free time.. :)
BR, -- rofa
On Tue, 6 Oct 2009, jjtt@mbnet.fi wrote:
I'm contemplating updating my trusty 1.6.0 to the latest development version, but I can't seem to get DVB subtitles from old recordings to work.
Subtitles are shown corretly both when viewing live tv and when viewing new recordings, but when viewing old PES recordings VDR just says that no subtitles are available.
I'm using vanilla VDR and the xineliboutput plugin.
Zimiq did all the hard work to pinpoint the faulty method: http://www.linuxtv.fi/viewtopic.php?p=24394#24394
At least this patch did help on my few old recordings:
--- dvbsubtitle.c.orig 2009-11-17 18:29:16.000000000 +0200 +++ dvbsubtitle.c 2009-11-17 18:30:44.000000000 +0200 @@ -699,7 +699,7 @@ }
if (Length > PayloadOffset + SubstreamHeaderLength) { - int64_t pts = PesGetPts(Data); + int64_t pts = PesHasPts(Data) ? PesGetPts(Data) : 0; if (pts) dbgconverter("Converter PTS: %lld\n", pts); const uchar *data = Data + PayloadOffset + SubstreamHeaderLength; // skip substream header
BR, -- rofa
On Tue, Nov 17, 2009 at 06:42:28PM +0200, Rolf Ahrenberg wrote:
On Tue, 6 Oct 2009, jjtt@mbnet.fi wrote:
Subtitles are shown corretly both when viewing live tv and when viewing new recordings, but when viewing old PES recordings VDR just says that no subtitles are available.
Zimiq did all the hard work to pinpoint the faulty method: http://www.linuxtv.fi/viewtopic.php?p=24394#24394
At least this patch did help on my few old recordings:
--- dvbsubtitle.c.orig 2009-11-17 18:29:16.000000000 +0200 +++ dvbsubtitle.c 2009-11-17 18:30:44.000000000 +0200 @@ -699,7 +699,7 @@ }
if (Length > PayloadOffset + SubstreamHeaderLength) {
int64_t pts = PesGetPts(Data);
int64_t pts = PesHasPts(Data) ? PesGetPts(Data) : 0; if (pts) dbgconverter("Converter PTS: %lld\n", pts); const uchar *data = Data + PayloadOffset + SubstreamHeaderLength; // skip substream header
I applied the patch and 1.7.9 now shows subtitles from old recordings correctly.
Thank you.