> At second glance, my first implementation had a really negative effect on the performance. GetStreamDetails() is called every 500ms, so scanning for ext. subs and opening ext. vobsubs every time is a no-go. 

The main (performance) problem, besides the scanning, is the opening/probing of vobsubs by ffmpeg every  frame.