From e6132ed7421684edea84b83134df5482a5a38cd5 Mon Sep 17 00:00:00 2001 From: aptly-io Date: Thu, 14 Jan 2016 23:11:57 +0100 Subject: [PATCH] Fix RGBA color tuple parsing The TTML 1 spec. defines an exact RGBA color tuple as #rrggbbaa See https://www.w3.org/TR/ttml1/#style-value-color Android's internal representation is ARGB. The correct parsing therefore requires a bit of extra byte shuffling ... --- .../google/android/exoplayer/text/ttml/TtmlColorParser.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java b/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java index 4a519dae7e..44029de09d 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java @@ -94,7 +94,11 @@ import java.util.regex.Pattern; if (colorExpression.length() == 7) { // Set the alpha value color |= 0x00000000ff000000; - } else if (colorExpression.length() != 9) { + } else if (colorExpression.length() == 9) { + int alpha = (int) color & 0x00000000000000ff; // get the transparency + color >>= 8; // put rgb bytes in their rightful place + color |= alpha << 24; // put the transparency byte in its rightful place + } else { throw new IllegalArgumentException(); } return (int) color;