player: error dash chunk source upd

This commit is contained in:
Yuriy Liskov
2022-08-25 08:05:49 +03:00
parent 95d9f5a3aa
commit c2d0bc2b41
3 changed files with 11 additions and 12 deletions

View File

@@ -8,7 +8,6 @@ import android.text.TextUtils;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSourceFactory;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import com.google.android.exoplayer2.source.ConcatenatingMediaSource;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSourceEventListener;
@@ -33,7 +32,7 @@ import com.google.android.exoplayer2.upstream.HttpDataSource.BaseFactory;
import com.google.android.exoplayer2.util.Util;
import com.liskovsoft.sharedutils.helpers.FileHelpers;
import com.liskovsoft.sharedutils.mylogger.Log;
import com.liskovsoft.smartyoutubetv2.common.exoplayer.errors.MyDefaultDashChunkSource;
import com.liskovsoft.smartyoutubetv2.common.exoplayer.errors.ErrorDefaultDashChunkSource;
import com.liskovsoft.smartyoutubetv2.common.exoplayer.errors.MyDefaultLoadErrorHandlingPolicy;
import com.liskovsoft.smartyoutubetv2.common.exoplayer.errors.TrackErrorFixer;
import com.liskovsoft.smartyoutubetv2.common.prefs.PlayerTweaksData;
@@ -162,7 +161,7 @@ public class ExoMediaSourceFactory {
case C.TYPE_DASH:
DashMediaSource dashSource =
new DashMediaSource.Factory(
new MyDefaultDashChunkSource.Factory(mMediaDataSourceFactory, mTrackErrorFixer),
new ErrorDefaultDashChunkSource.Factory(mMediaDataSourceFactory, mTrackErrorFixer),
buildDataSourceFactory(USE_BANDWIDTH_METER)
)
.setManifestParser(new LiveDashManifestParser()) // Don't make static! Need state reset for each live source.
@@ -195,7 +194,7 @@ public class ExoMediaSourceFactory {
private MediaSource buildMPDMediaSource(Uri uri, InputStream mpdContent) {
// Are you using FrameworkSampleSource or ExtractorSampleSource when you build your player?
DashMediaSource dashSource = new DashMediaSource.Factory(
new DefaultDashChunkSource.Factory(mMediaDataSourceFactory),
new ErrorDefaultDashChunkSource.Factory(mMediaDataSourceFactory, mTrackErrorFixer),
null
)
.createMediaSource(getManifest(uri, mpdContent));

View File

@@ -14,7 +14,7 @@ import com.google.android.exoplayer2.upstream.TransferListener;
import java.util.List;
public class MyDefaultDashChunkSource extends DefaultDashChunkSource {
public class ErrorDefaultDashChunkSource extends DefaultDashChunkSource {
private final TrackErrorFixer mTrackErrorFixer;
public static final class Factory implements DashChunkSource.Factory {
@@ -50,7 +50,7 @@ public class MyDefaultDashChunkSource extends DefaultDashChunkSource {
if (transferListener != null) {
dataSource.addTransferListener(transferListener);
}
return new MyDefaultDashChunkSource(
return new ErrorDefaultDashChunkSource(
manifestLoaderErrorThrower,
manifest,
periodIndex,
@@ -68,11 +68,11 @@ public class MyDefaultDashChunkSource extends DefaultDashChunkSource {
}
public MyDefaultDashChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, DashManifest manifest, int periodIndex,
int[] adaptationSetIndices, TrackSelection trackSelection, int trackType,
DataSource dataSource, long elapsedRealtimeOffsetMs, int maxSegmentsPerLoad,
boolean enableEventMessageTrack, List<Format> closedCaptionFormats,
@Nullable PlayerTrackEmsgHandler playerTrackEmsgHandler, @Nullable TrackErrorFixer trackErrorFixer) {
public ErrorDefaultDashChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, DashManifest manifest, int periodIndex,
int[] adaptationSetIndices, TrackSelection trackSelection, int trackType,
DataSource dataSource, long elapsedRealtimeOffsetMs, int maxSegmentsPerLoad,
boolean enableEventMessageTrack, List<Format> closedCaptionFormats,
@Nullable PlayerTrackEmsgHandler playerTrackEmsgHandler, @Nullable TrackErrorFixer trackErrorFixer) {
super(manifestLoaderErrorThrower, manifest, periodIndex, adaptationSetIndices, trackSelection,
trackType, dataSource, elapsedRealtimeOffsetMs, maxSegmentsPerLoad,
enableEventMessageTrack, closedCaptionFormats, playerTrackEmsgHandler);

View File

@@ -39,7 +39,7 @@ public class TrackErrorFixer {
InvalidResponseCodeException ex = (InvalidResponseCodeException) e;
if (ex.responseCode != 404) {
if (ex.responseCode != 404 && ex.responseCode != 503) {
return false;
}