diff --git a/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaDialogueFormat.java b/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaDialogueFormat.java index 03c025cd94..df3db09d73 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaDialogueFormat.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaDialogueFormat.java @@ -76,7 +76,9 @@ import com.google.android.exoplayer2.util.Util; break; } } - return (startTimeIndex != C.INDEX_UNSET && endTimeIndex != C.INDEX_UNSET) + return (startTimeIndex != C.INDEX_UNSET + && endTimeIndex != C.INDEX_UNSET + && textIndex != C.INDEX_UNSET) ? new SsaDialogueFormat(startTimeIndex, endTimeIndex, styleIndex, textIndex, keys.length) : null; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaStyle.java b/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaStyle.java index 6379237387..bcfa514841 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaStyle.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/text/ssa/SsaStyle.java @@ -119,9 +119,15 @@ import java.util.regex.Pattern; try { return new SsaStyle( styleValues[format.nameIndex].trim(), - parseAlignment(styleValues[format.alignmentIndex].trim()), - parseColor(styleValues[format.primaryColorIndex].trim()), - parseFontSize(styleValues[format.fontSizeIndex].trim())); + format.alignmentIndex != C.INDEX_UNSET + ? parseAlignment(styleValues[format.alignmentIndex].trim()) + : SSA_ALIGNMENT_UNKNOWN, + format.primaryColorIndex != C.INDEX_UNSET + ? parseColor(styleValues[format.primaryColorIndex].trim()) + : null, + format.fontSizeIndex != C.INDEX_UNSET + ? parseFontSize(styleValues[format.fontSizeIndex].trim()) + : Cue.DIMEN_UNSET); } catch (RuntimeException e) { Log.w(TAG, "Skipping malformed 'Style:' line: '" + styleLine + "'", e); return null; diff --git a/testdata/src/test/assets/media/ssa/style_colors b/testdata/src/test/assets/media/ssa/style_colors index 36ce7de761..a224e7ed4d 100644 --- a/testdata/src/test/assets/media/ssa/style_colors +++ b/testdata/src/test/assets/media/ssa/style_colors @@ -5,22 +5,22 @@ PlayResX: 1280 PlayResY: 720 [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 -Style: PrimaryColourStyleHexRed ,Roboto,50,&H000000FF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: PrimaryColourStyleHexYellow ,Roboto,50,&H0000FFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: PrimaryColourStyleHexGreen ,Roboto,50,&HFF00 ,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: PrimaryColourStyleHexAlpha ,Roboto,50,&HA00000FF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: PrimaryColourStyleDecimal ,Roboto,50,16711680 ,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: PrimaryColourStyleDecimalAlpha ,Roboto,50,2164195328,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: PrimaryColourStyleInvalid ,Roboto,50,blue ,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 +Format: Name ,PrimaryColour +Style: PrimaryColourStyleHexRed ,&H000000FF +Style: PrimaryColourStyleHexYellow ,&H0000FFFF +Style: PrimaryColourStyleHexGreen ,&HFF00 +Style: PrimaryColourStyleHexAlpha ,&HA00000FF +Style: PrimaryColourStyleDecimal ,16711680 +Style: PrimaryColourStyleDecimalAlpha,2164195328 +Style: PrimaryColourStyleInvalid ,blue [Events] -Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text -Dialogue: 0,0:00:01.00,0:00:02.00,PrimaryColourStyleHexRed ,Arnold,0,0,0,,First line in RED (&H000000FF). -Dialogue: 0,0:00:03.00,0:00:04.00,PrimaryColourStyleHexYellow ,Arnold,0,0,0,,Second line in YELLOW (&H0000FFFF). -Dialogue: 0,0:00:05.00,0:00:06.00,PrimaryColourStyleHexGreen ,Arnold,0,0,0,,Third line in GREEN (leading zeros &HFF00). -Dialogue: 0,0:00:07.00,0:00:08.00,PrimaryColourStyleHexAlpha ,Arnold,0,0,0,,Fourth line in RED with alpha (&H400000FF). -Dialogue: 0,0:00:09.00,0:00:10.00,PrimaryColourStyleDecimal ,Arnold,0,0,0,,Fifth line in BLUE (16711680). -Dialogue: 0,0:00:11.00,0:00:12.00,PrimaryColourStyleDecimalAlpha ,Arnold,0,0,0,,Sixth line in BLUE with alpha (2164195328). -Dialogue: 0,0:00:13.00,0:00:14.00,PrimaryColourInvalid ,Arnold,0,0,0,,Seventh line with invalid color . +Format: Start ,End ,Style ,Text +Dialogue: 0:00:01.00,0:00:02.00,PrimaryColourStyleHexRed ,First line in RED (&H000000FF). +Dialogue: 0:00:03.00,0:00:04.00,PrimaryColourStyleHexYellow ,Second line in YELLOW (&H0000FFFF). +Dialogue: 0:00:05.00,0:00:06.00,PrimaryColourStyleHexGreen ,Third line in GREEN (leading zeros &HFF00). +Dialogue: 0:00:07.00,0:00:08.00,PrimaryColourStyleHexAlpha ,Fourth line in RED with alpha (&H400000FF). +Dialogue: 0:00:09.00,0:00:10.00,PrimaryColourStyleDecimal ,Fifth line in BLUE (16711680). +Dialogue: 0:00:11.00,0:00:12.00,PrimaryColourStyleDecimalAlpha,Sixth line in BLUE with alpha (2164195328). +Dialogue: 0:00:13.00,0:00:14.00,PrimaryColourInvalid ,Seventh line with invalid color. diff --git a/testdata/src/test/assets/media/ssa/style_font_size b/testdata/src/test/assets/media/ssa/style_font_size index 4266abc827..c5e4ceeaa0 100644 --- a/testdata/src/test/assets/media/ssa/style_font_size +++ b/testdata/src/test/assets/media/ssa/style_font_size @@ -6,13 +6,13 @@ PlayResX: 1280 PlayResY: 720 [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 -Style: FontSizeSmall ,Roboto,30, &H000000FF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 -Style: FontSizeBig ,Roboto,72.2,&H000000FF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,3,0,2,50,50,70,1 +Format: Name ,Fontsize +Style: FontSizeSmall,30 +Style: FontSizeBig ,72.2 [Events] -Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text -Dialogue: 0,0:00:00.95,0:00:03.11,FontSizeSmall ,Arnold,0,0,0,,First line with font size 30. -Dialogue: 0,0:00:08.50,0:00:11.50,FontSizeBig ,Arnold,0,0,0,,Second line with font size 72.2. +Format: Start ,End ,Style ,Text +Dialogue: 0:00:00.95,0:00:03.11,FontSizeSmall,First line with font size 30. +Dialogue: 0:00:08.50,0:00:11.50,FontSizeBig ,Second line with font size 72.2.