Major changes are concentrated in the sync and render work-objects.
- The sync work-object's handling of subtitles has been completely rewritten, since my changes were too difficult to fit into the old algorithm. I have left the old algorithm in for the moment, since the patch becomes very difficult to read when it is removed outright. While this new algorithm is being tested it may also be useful to reenable the old algorithm occasionally for comparison.
- The render work-object now supports queueing a list of subtitles to be processed for each frame. To implement this, FIFOs have been extended to support pushing/popping buffer-lists as single elements.
While working on this I discovered there are some subtitle timing issues when the subtitle decoder lags behind the video decoder, which seems to be very common with the SSA subtitle decoder. (You can see it by enabling the new flag SUBSYNC_VERBOSE_TIMING.) Will investigate and fix in a separate patch.