mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/ass: accurately preserve colours
Colour values used in ASS files without a "YCbCr Matrix" header set to "None" are subject to colour mangling, due to how ASS was historically conceived. A more in-depth description can be found in the documetation inside libass' public ass_types.h header. The important part is, if this header is not set to "None", the final output colours can deviate from the literal value specified in the file. When converting from non-ASS formats we do not want any colour shift to happen, so let's set the appropiate header. NB: ffmpeg's subtitle filter, does not follow libass' documentation regarding colour mangling, thus hiding the bug. Anything based on VSFilter, XySubFilter or e.g. mpv do and might show the issue. (Of course native ASS subs, which _do_ rely on colour mangling won't work properly with the subtitle filter, but this can be fixed another time)
This commit is contained in:
parent
d82e30d0d1
commit
95115fcc18
@ -41,6 +41,7 @@ int ff_ass_subtitle_header_full(AVCodecContext *avctx,
|
||||
"PlayResX: %d\r\n"
|
||||
"PlayResY: %d\r\n"
|
||||
"ScaledBorderAndShadow: yes\r\n"
|
||||
"YCbCr Matrix: None\r\n"
|
||||
"\r\n"
|
||||
"[V4+ Styles]\r\n"
|
||||
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
@ -4,6 +4,7 @@ ScriptType: v4.00+
|
||||
PlayResX: 384
|
||||
PlayResY: 288
|
||||
ScaledBorderAndShadow: yes
|
||||
YCbCr Matrix: None
|
||||
|
||||
[V4+ Styles]
|
||||
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
||||
|
Loading…
Reference in New Issue
Block a user