From c2d0bc2b416803fb8061b01cb05e6e876aec7fc1 Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Thu, 25 Aug 2022 08:05:49 +0300 Subject: [PATCH] player: error dash chunk source upd --- .../common/exoplayer/ExoMediaSourceFactory.java | 7 +++---- ...ource.java => ErrorDefaultDashChunkSource.java} | 14 +++++++------- .../common/exoplayer/errors/TrackErrorFixer.java | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) rename common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/{MyDefaultDashChunkSource.java => ErrorDefaultDashChunkSource.java} (81%) diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/ExoMediaSourceFactory.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/ExoMediaSourceFactory.java index d4b7264c8..926bbd175 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/ExoMediaSourceFactory.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/ExoMediaSourceFactory.java @@ -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)); diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/MyDefaultDashChunkSource.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/ErrorDefaultDashChunkSource.java similarity index 81% rename from common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/MyDefaultDashChunkSource.java rename to common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/ErrorDefaultDashChunkSource.java index d8696302a..4c6eb603c 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/MyDefaultDashChunkSource.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/ErrorDefaultDashChunkSource.java @@ -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 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 closedCaptionFormats, + @Nullable PlayerTrackEmsgHandler playerTrackEmsgHandler, @Nullable TrackErrorFixer trackErrorFixer) { super(manifestLoaderErrorThrower, manifest, periodIndex, adaptationSetIndices, trackSelection, trackType, dataSource, elapsedRealtimeOffsetMs, maxSegmentsPerLoad, enableEventMessageTrack, closedCaptionFormats, playerTrackEmsgHandler); diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/TrackErrorFixer.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/TrackErrorFixer.java index 80d313fd6..e4e0975ad 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/TrackErrorFixer.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/errors/TrackErrorFixer.java @@ -39,7 +39,7 @@ public class TrackErrorFixer { InvalidResponseCodeException ex = (InvalidResponseCodeException) e; - if (ex.responseCode != 404) { + if (ex.responseCode != 404 && ex.responseCode != 503) { return false; }