I had a little time to track down the issue with reelbox plugin and DVB subtitle sync.
Subtitles works fine when using MPEG audio track, with live and recorings (i have set analog audio
to soundcard from settings as suggested here earlier)
When changing to Dolby Digital audio track, subtitles don't even get displayed.
Problem seems to be how reelbox plugin returns STC. I copied line
-- CLIP --
dbgconverter("PTS: %lld STC: %lld (%lld) timeout: %d\n", sb->Pts(), cDevice::PrimaryDevice()->GetSTC(), Delta, sb->Timeout());
-- CLIP -
in dvbsubtitle.c to just before if (Delta <= MAXDELTA) (because STC is wrong and delta is more than
MAXDELTA, and it would never be shown).
With Dolby Digital track reelbox plugin always returns same STC:
-- CLIP --
Converter PTS: 7576263738
GET STC c0bdfd77
GET STC c0bdfd77
Before delta <= MAXDELTA: PTS: 7576263738 STC: 3233676663 (529108) timeout: 8
Converter PTS: 7576688500
GET STC c0bdfd77
GET STC c0bdfd77
Before delta <= MAXDELTA: PTS: 7576688500 STC: 3233676663 (533828) timeout: 3
Converter PTS: 7576696884
GET STC c0bdfd77
GET STC c0bdfd77
Before delta <= MAXDELTA: PTS: 7576696884 STC: 3233676663 (533921) timeout: 6
Converter PTS: 7581177356
GET STC c0bdfd77
GET STC c0bdfd77
Before delta <= MAXDELTA: PTS: 7581177356 STC: 3233676663 (583704) timeout: 7
Converter PTS: 7581486822
GET STC c0bdfd77
GET STC c0bdfd77
Before delta <= MAXDELTA: PTS: 7581486822 STC: 3233676663 (587142) timeout: 3
-- CLIP --
With PCM audio everything is working fine (note that "GET STC" doesn't appear here):
-- CLIP --
Converter PTS: 7591193232
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296037783 (2090) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296045463 (2005) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296056983 (1877) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296064663 (1791) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296076183 (1663) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296080023 (1621) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296091543 (1493) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296103063 (1365) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296106903 (1322) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296118423 (1194) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296129943 (1066) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296133783 (1023) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296141463 (938) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296149143 (853) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296160663 (725) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296168343 (639) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296176023 (554) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296187543 (426) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296195223 (341) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296206743 (213) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296214423 (127) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296222103 (42) timeout: 6
Before delta <= MAXDELTA: PTS: 7591193232 STC: 3296225943 (0) timeout: 6
Got 1 bitmaps, showing #1
PTS: 7591193232 STC: 3296225943 (0) timeout: 6
-- CLIP --
So next i checked out from where this "GET STC" is from. It's from reelbox plugin ReelBoxDevice.c:
-- CLIP --
int64_t ReelBoxDevice::GetSTC()
{
UInt stc = stc_;
if (audioPlayerHd_) {
printf("GET STC %x\n",HdCommChannel::hda->player[0].stc+stc_);
return HdCommChannel::hda->player[0].stc+stc_;
}
return (stc == 0) ? -1LL : stc;
}
-- CLIP --
So i hope someone who has more experience with coding and with VDR can continue from here and try
to find cure for this.I tried to comment whole "if (audioPlayerHd_)" statement but it
didn't help, wrong STC will be returned always anyway.