Fix rendering DVB subtitle on API 28.
Issue: #5862 PiperOrigin-RevId: 248112524
This commit is contained in:
parent
035686e58c
commit
cea3071b33
@ -9,6 +9,8 @@
|
|||||||
* Offline: Add option to remove all downloads.
|
* Offline: Add option to remove all downloads.
|
||||||
* Add a workaround for a decoder failure on ZTE Axon7 mini devices when playing
|
* Add a workaround for a decoder failure on ZTE Axon7 mini devices when playing
|
||||||
48kHz audio ([#5821](https://github.com/google/ExoPlayer/issues/5821)).
|
48kHz audio ([#5821](https://github.com/google/ExoPlayer/issues/5821)).
|
||||||
|
* Fix DVB subtitles for SDK 28
|
||||||
|
([#5862](https://github.com/google/ExoPlayer/issues/5862)).
|
||||||
|
|
||||||
### 2.10.0 ###
|
### 2.10.0 ###
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import android.graphics.Color;
|
|||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.PorterDuffXfermode;
|
import android.graphics.PorterDuffXfermode;
|
||||||
import android.graphics.Region;
|
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import com.google.android.exoplayer2.text.Cue;
|
import com.google.android.exoplayer2.text.Cue;
|
||||||
import com.google.android.exoplayer2.util.Log;
|
import com.google.android.exoplayer2.util.Log;
|
||||||
@ -150,6 +149,8 @@ import java.util.List;
|
|||||||
List<Cue> cues = new ArrayList<>();
|
List<Cue> cues = new ArrayList<>();
|
||||||
SparseArray<PageRegion> pageRegions = subtitleService.pageComposition.regions;
|
SparseArray<PageRegion> pageRegions = subtitleService.pageComposition.regions;
|
||||||
for (int i = 0; i < pageRegions.size(); i++) {
|
for (int i = 0; i < pageRegions.size(); i++) {
|
||||||
|
// Save clean clipping state.
|
||||||
|
canvas.save();
|
||||||
PageRegion pageRegion = pageRegions.valueAt(i);
|
PageRegion pageRegion = pageRegions.valueAt(i);
|
||||||
int regionId = pageRegions.keyAt(i);
|
int regionId = pageRegions.keyAt(i);
|
||||||
RegionComposition regionComposition = subtitleService.regions.get(regionId);
|
RegionComposition regionComposition = subtitleService.regions.get(regionId);
|
||||||
@ -163,9 +164,7 @@ import java.util.List;
|
|||||||
displayDefinition.horizontalPositionMaximum);
|
displayDefinition.horizontalPositionMaximum);
|
||||||
int clipBottom = Math.min(baseVerticalAddress + regionComposition.height,
|
int clipBottom = Math.min(baseVerticalAddress + regionComposition.height,
|
||||||
displayDefinition.verticalPositionMaximum);
|
displayDefinition.verticalPositionMaximum);
|
||||||
canvas.clipRect(baseHorizontalAddress, baseVerticalAddress, clipRight, clipBottom,
|
canvas.clipRect(baseHorizontalAddress, baseVerticalAddress, clipRight, clipBottom);
|
||||||
Region.Op.REPLACE);
|
|
||||||
|
|
||||||
ClutDefinition clutDefinition = subtitleService.cluts.get(regionComposition.clutId);
|
ClutDefinition clutDefinition = subtitleService.cluts.get(regionComposition.clutId);
|
||||||
if (clutDefinition == null) {
|
if (clutDefinition == null) {
|
||||||
clutDefinition = subtitleService.ancillaryCluts.get(regionComposition.clutId);
|
clutDefinition = subtitleService.ancillaryCluts.get(regionComposition.clutId);
|
||||||
@ -214,9 +213,11 @@ import java.util.List;
|
|||||||
(float) regionComposition.height / displayDefinition.height));
|
(float) regionComposition.height / displayDefinition.height));
|
||||||
|
|
||||||
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
|
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
|
||||||
|
// Restore clean clipping state.
|
||||||
|
canvas.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
return cues;
|
return Collections.unmodifiableList(cues);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Static parsing.
|
// Static parsing.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user