FLV: Ignore invalid SCRIPTDATA name type, rather than fail playback

Issue: #7675
PiperOrigin-RevId: 323371286
This commit is contained in:
olly 2020-07-27 17:04:23 +01:00 committed by Oliver Woodman
parent 3198c51bdb
commit c010d28b14
2 changed files with 5 additions and 4 deletions

View file

@ -9,6 +9,8 @@
* FMP4: Fix `saiz` and `senc` sample count checks, resolving a "length * FMP4: Fix `saiz` and `senc` sample count checks, resolving a "length
mismatch" `ParserException` when playing certain protected FMP4 streams mismatch" `ParserException` when playing certain protected FMP4 streams
([#7592](https://github.com/google/ExoPlayer/issues/7592)). ([#7592](https://github.com/google/ExoPlayer/issues/7592)).
* FLV: Ignore SCRIPTDATA segments with invalid name types, rather than failing
playback ([#7675](https://github.com/google/ExoPlayer/issues/7675)).
* IMA extension: Upgrade to IMA SDK 3.19.4, bringing in a fix for setting the * IMA extension: Upgrade to IMA SDK 3.19.4, bringing in a fix for setting the
media load timeout media load timeout
([#7170](https://github.com/google/ExoPlayer/issues/7170)). ([#7170](https://github.com/google/ExoPlayer/issues/7170)).

View file

@ -17,7 +17,6 @@ package com.google.android.exoplayer2.extractor.flv;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ParserException;
import com.google.android.exoplayer2.extractor.DummyTrackOutput; import com.google.android.exoplayer2.extractor.DummyTrackOutput;
import com.google.android.exoplayer2.util.ParsableByteArray; import com.google.android.exoplayer2.util.ParsableByteArray;
import java.util.ArrayList; import java.util.ArrayList;
@ -65,11 +64,11 @@ import java.util.Map;
} }
@Override @Override
protected boolean parsePayload(ParsableByteArray data, long timeUs) throws ParserException { protected boolean parsePayload(ParsableByteArray data, long timeUs) {
int nameType = readAmfType(data); int nameType = readAmfType(data);
if (nameType != AMF_TYPE_STRING) { if (nameType != AMF_TYPE_STRING) {
// Should never happen. // Ignore segments with unexpected name type.
throw new ParserException(); return false;
} }
String name = readAmfString(data); String name = readAmfString(data);
if (!NAME_METADATA.equals(name)) { if (!NAME_METADATA.equals(name)) {