• Laurent Aimar's avatar
    all: Subtitle improvment patch by Bernie Purcell. · 4d4eb334
    Laurent Aimar authored
    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.
    
    4d4eb334
quartztext.c 35 KB