From b87463a85791e1e1600413cedf4c9adfd8615a64 Mon Sep 17 00:00:00 2001 From: Rik Heijdens Date: Wed, 14 Sep 2016 09:32:53 -0400 Subject: [PATCH] Fixed an off by one error and fixed iterating through the cues --- .../text/eia608/Eia608CueBuilder.java | 8 +++---- .../exoplayer2/text/eia608/Eia608Decoder.java | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608CueBuilder.java b/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608CueBuilder.java index 3531b4dcc2..aee60cb38b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608CueBuilder.java +++ b/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608CueBuilder.java @@ -1,8 +1,5 @@ package com.google.android.exoplayer2.text.eia608; -import com.google.android.exoplayer2.text.Cue; -import com.google.android.exoplayer2.util.Assertions; - import android.text.Layout; import android.text.SpannableStringBuilder; import android.text.Spanned; @@ -10,6 +7,9 @@ import android.text.style.CharacterStyle; import android.text.style.ForegroundColorSpan; import android.text.style.StyleSpan; +import com.google.android.exoplayer2.text.Cue; +import com.google.android.exoplayer2.util.Assertions; + import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; @@ -73,7 +73,7 @@ import java.util.List; * @return true if rolling was possible. */ public boolean rollUp() { - if (row < 1) { + if (row <= 1) { return false; } setRow(row - 1); diff --git a/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608Decoder.java b/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608Decoder.java index 48fa816977..086178622b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608Decoder.java +++ b/library/src/main/java/com/google/android/exoplayer2/text/eia608/Eia608Decoder.java @@ -15,6 +15,13 @@ */ package com.google.android.exoplayer2.text.eia608; +import android.graphics.Color; +import android.graphics.Typeface; +import android.text.style.BackgroundColorSpan; +import android.text.style.ForegroundColorSpan; +import android.text.style.StyleSpan; +import android.text.style.UnderlineSpan; + import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.SubtitleDecoder; @@ -24,14 +31,8 @@ import com.google.android.exoplayer2.text.SubtitleOutputBuffer; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.ParsableByteArray; -import android.graphics.Color; -import android.graphics.Typeface; -import android.text.style.BackgroundColorSpan; -import android.text.style.ForegroundColorSpan; -import android.text.style.StyleSpan; -import android.text.style.UnderlineSpan; - import java.util.Collections; +import java.util.Iterator; import java.util.LinkedList; import java.util.TreeSet; @@ -472,10 +473,12 @@ public final class Eia608Decoder implements SubtitleDecoder { // from memory and from the display. The remaining rows of text are each rolled up into the // next highest row in the window, leaving the base row blank and ready to accept new text. if (captionMode == CC_MODE_ROLL_UP) { - for (Eia608CueBuilder cue : cues) { + Iterator iterator = cues.iterator(); + while (iterator.hasNext()) { + Eia608CueBuilder cue = iterator.next(); // Roll up all the other rows. if (!cue.rollUp()) { - cues.remove(cue); + iterator.remove(); } } currentCue = new Eia608CueBuilder();