also für PAL ist es ja genau dasselbe ob nun timecode oder frame, framenummer*40ms und un einen "vernünftigen" timecode umwandeln. Für NTSC oder irgendwelche krummen frameraten ist's natürlich schon so dass die 1-Millisekunden-Auflösung in USF nicht absolut rundungsfrei ist - Aber ich glaube nicht dass das ein Problem ist. Der video frame ist ja auch dann noch ein paar millis derselbe, da kommts dann auch nicht draufan ob der subtitle frame der darübergelegt wird seinen effect für eine Zeit 0.5 ms zu früh oder zu spät gerendert hat. Dass ein untertitel auf einem frame angezeigt wird wo er nicht hingehört ist eigentlich ausgeschlossen, wenn ein subtitle laut skript um 05.000 anfängt und um 10.0000 aufhört, und eine applikation fordert einen untertitel mit timecode 04.999999 oder 10.000001, dann ist da nix. Der untertitel wird nie "nach vorn oder hinten gerundet". Wenn eine anwendung allerdings von sich aus untertitel für falsche timecodes anfordert, dann ist da natürlich kein kraut dagegen gewachsen:) Interne Rundungsfehler in pixifier sollten eigentlich auch kein problem sein - floats sind immer double und timecodes auch 64bit integer.
Zudem: AFAIK, ist Matroska ja auch bei Video-Frames Timecode basiert, allerdings etwas mehr als millisekunden auflösung =) (nur so weil USF ja eigentlich "das matroska haus-untertitel-format" ist, obwohl man das nicht so sieht ;))
Zur Fehlerbehandlung:
Ich werde den code nicht gegen jeden Müll absichern, aber Attribute und Elemente dies nicht kennt, sollten es eigentlich nicht stören. Wenn du mal den skript-teil posten könntest der picsubu abschiesst obwohl es nur ganz normales, simples, gültiges xml (und ohne namespaces und so) ist... Eigentlich dachte ich, das werde einfach ignoriert, aber möglicherweise manchmal nicht..
Andererseits kann es aber auch sein, das es crasht, gerade _weil_ es den effekt im image erkennt und zu verarbeiten versucht (dort aber für images noch buggy code rumliegt).
Was ich aber nicht machen werde, ist versuchen dem XML parser zu helfen. Wenn der etwas nicht als XML akzepiert, dann lass ich das mal schön bleiben. Bei AviSynth hast du immerhin noch den Vorteil, das gerade das ganze script am Anfang eingelesen wird - so knallt VDM bei XML-Fehlern immerhin am Anfang runter und nicht nach X Stunden encoden (beim DS filter PixiShow wird das Skript nur häppchenweise vom Splitter in reingefüttert, so das es ab falschem XML auch mittendrin crashen kann).
PS: es gibt keine verbotenen Tags/Attribute in USF, nur "XML das USF nicht kennt" ;P Ausser, naja, bei Werten von Attributen, wenn du natürlich sowas wie font-size="Arial" schreibts, weiss nicht wie gut das gegessen wird. Im besten Fall ignoriert, aber es kann auch dazu führen, dass so dann etwas "unterdefiniert" ist und deshalb nichts mehr geht.