The IMSC Recommendation includes an Hypothetical Render Model (HRM) that constrains document complexity, allowing authors of subtitles and captions to know that they are not generating subtitles that will overload the players.
An open source implementation of the HRM for IMSC Text Profile documents has been made available.
IMSC users and implementers are invited to test their documents against this or another implementation, and are encouraged to report issues they believe exist with the HRM as specified in the IMSC Recommendation.
Background – what is an HRM?
Correct presentation of subtitles and captions against video media is complex.
Many people think first of the visual appearance: does it support all the script and layout features needed, the colours, positions, fonts, etc.? Getting those all implemented requires a high level of complexity, and that can mean that the processing time to present subtitles becomes significant, especially in the context of real time video playback – your web based player is already doing a lot of work playing back video and audio, before you ask it to render text or images at the same time, with frame accurate synchronisation.
Timing is also a crucial factor in correct presentation: late subtitles, subtitles that are not visible for long enough to read, or subtitles that never appear at all, are real audience-affecting problems.
Implementers of video players need their code to be performant enough to show the subtitles; for this they need to know what is the worst case complexity that they have to deal with.
Authors of subtitles and captions need to know that they are not generating subtitles that will overload the players.
The solution to this, within the IMSC Recommendation, is an algorithm that can be run on a document statically, i.e., without performing a full render, that establishes if the document’s complexity is okay, or too great. This mechanism is called the Hypothetical Render Model (HRM). It uses a double buffer model and requires that there is enough time after each change in display to render what will be displayed at the next change, using a rendering model and some predefined values for expected rendering performance.