Je kunt er rustig van uit gaan dat als het simpel was geweest, dat het al lang anders was geïmplementeerd.
De datastroom is (iets vereenvoudigd):
pvr* -->
tuner -> demuxer* -> video-> video decoder*
| +---> audio-> audio decoder*
+------> subs-> enigma -> osd
Alles waar een * bij staat is hardware van de broadcom SoC. De hele stroom van tuner naar demuxer naar video decoder, en van tuner naar demuxer naar audio decoder, daar zit enigma of wat voor software dan ook nooit tussen, dat zijn bits die over paden binnen de SoC lopen.
Je hebt dus op enig moment dat je in enigma een ondertitel binnenkrijgt, en als je daar een timestamp bij hebt, dan kun je die zolang laten wachten tot de timestamp gelijk is aan die van de video die op dat moment wordt gedecodeerd/afgebeeld (dat kun je opvragen aan de hardware). Als je geen timestamp op de ondertitel hebt, dan wordt het erg lastig. Ik zit al te denken aan het constructie waarbij je gaat meten wat de vertraging is tussen ontvangst (is ook het moment dat het de decoder in gaat) en afbeelding (door buffering) van video frames *). De buffering, dus vanaf het punt dat het de video decoder in gaat en tot het moment dat het beeld op tv staat, kan substantieel zijn, meerdere seconden en is ook nog eens sterk afhankelijk van of de bron de tuner is of een file (pvr device).
De feitelijke ellende is dus dat een deel in hardware gebeurt en een klein deel in software en beide hebben heel weinig invloed op elkaar.
EDIT *) ik bedenk me net dat je dan de hele video stream van de demuxer moet aftappen in software, niet echt handig.
Edited by Erik Slagter, 24 March 2014 - 22:08.