all: Subtitle improvment patch by Bernie Purcell.
Author comments: It makes the following changes: * Changes to vout_subpictures.c to create some new variables which renderers are free to use to render time-specific subtitling information, such as karaoke. One of these variables allows for the text region to not be permanently converted to YUVA/YUVP - so that more than one pass can be made on the subtitle - so that it will update correctly over time. If a rendering module doesn't use or change any of the variables it behaves the same as usual, with the text region being rendered just the once to a YUVA/YUVP region and then just blended to the video on future passes. * Changes to alignment implementation: no longer use the i_text_align field of font_style_t at all; require the alignment to be correctly setup solely in the subpicture_region_t's i_align field (this is so that the alignment initially inherited from a style can be overridden). This meant minor changes to freetype.c and quartztext.c as well as the deletion of the i_text_align field in vlc_osd.h. It also involved some changes in subsdec.c, where most of the work in this patch occurs. * Minor change to quartztext.c to correct the interpretation of font size parameter, making it consistent with a similar change being made in subsdec.c, and to strip out multiple whitespace in html subtitles (Similar changes to the freetype.c module have already been made as part of a separate larger patch submission to fix problems with bidirectional styled text in that module) * Adds 2 new fields for carrying karaoke specific information to the text_style_t struct in vlc_osd.h. Changed the default_text_style's definition to agree with the changes made in the fields of text_style_t struct. * Support for <image> and <karaoke> subtitles in subsdec.c. (Full working karaoke also requires an as-yet unsubmitted patch to the renderers to implement) * Support for more than one subpicture_region_t per timestamp, with each subpicture region being able to have its own alignment and margins and type: text or image * Better calculation of plain-text versions of html subtitles NB: This patch still makes use of a mechanism of explicitly requesting the sdl_image module to decode any images it wants. The main reason for this is that the bmp decoder in ffmpeg (the image decoder with the highest score) presently only handles 16, 24 and 32 bit depths. An alternative is for us to switch off the bmp support in ffmpeg for the time being and the segment of code in subsdec.c that explicitly requests this module (along with one line added to sdl_image.c) can be removed. I'm not fussed by either implementation, but this way probably affects fewer other modules, so have submitted it this way.
Showing with 1035 additions and 331 deletions