• Nicolas George's avatar
    dvdsubenc: make it usable for transcoding. · 2dedd8f4
    Nicolas George authored
    DVD subtitles packets can only encode a single rectangle:
    if there are several, copy them into a big transparent one.
    
    DVD subtitles rely on an external 16-colors palette:
    use a reasonable default one, stored in the private context,
    and encode it into the extradata, as specified by Matroska.
    TODO: allow to change the palette with an option.
    
    Each packet can use four colors out of the global palette.
    The old logic was to map transparent colors to the color 0
    and all other colors to 3, 2, 1, cyclically in descending
    frequency order, completely disregarding the original color.
    
    Select the "best" four colors from the global palette, according
    to heuristics based on frequency, opacity and brightness, and
    arrange them in standard DVD order: background, foreground,
    outline, other.
    TODO: select the alpha value more finely; see if CHG_COLCON can
    allow more than 4 colors per packet.
    
    Reference:
    http://dvd.sourceforge.net/dvdinfo/spu.html
    
    With these changes, dvdsubenc can be used to transcode DVB subtitles
    and get a very decent result.
    2dedd8f4
dvdsubenc.c 13.7 KB