On 14.10.2010 14.48, Vesa wrote:
I did some testing and debugging. First note is that VDR do not do sanity check for STC on delay loop. Now there is on dvbsubtitle.c
if (STC>= 0) {
It should be
if (LimitTo32Bit(STC)>= 0) {
After this delay loop start to work with reelbox-3 plugin. With out that STC int64_t value includes garbage and get most of time negative value. Because same filtering is in use other places for this value, it should be also on if-statement..
This do not fix delay issue on eHD completely, but now subtitles are in sync with AV.
Next step is to add delay for subtitles. This is "dirty trick", it is only for eHD users. Simply add some value to Delta (add second line):
Code: Delta = LimitTo32Bit(sb->Pts()) - LimitTo32Bit(STC); Delta += 500000;
With that 50000 you will get 5.56s delay. With that eHD now works correctly with recording play. Live shows subtitles will be too late with this, but it is minor issue. I mostly watch recordings :)
The root cause is still there, somehow eHD delivers around 500000 too low STC for recording play. For live shows STC value is correct..
Thank you! I've tried these kind of hacks myself, but because of "ultimate" coding skills, couldn't produce anything useful...
Too bad, that this is not waf solution yet... I guess, that I'll have to increase the level of the "dirty tricks" and compile couple of vdr instances (one with the delay and one without) and create a command for switching between the instances :D
...hanu
p.s. My 3rd eHD card could be available for testing purposes in Helsinki metropolitan area ...