mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-23 08:30:44 +00:00
Apply code review suggestions.
This commit is contained in:
parent
e3062d7c66
commit
e8216b2e80
@ -2056,6 +2056,7 @@ public final class Player implements PlaybackListener, Listener {
|
|||||||
|
|
||||||
setRecovery();
|
setRecovery();
|
||||||
}, () -> {
|
}, () -> {
|
||||||
|
// This is executed when the current stream info is not available.
|
||||||
reloadPlayQueueManager();
|
reloadPlayQueueManager();
|
||||||
setRecovery();
|
setRecovery();
|
||||||
});
|
});
|
||||||
|
@ -21,7 +21,6 @@ import org.schabi.newpipe.player.playqueue.events.MoveEvent;
|
|||||||
import org.schabi.newpipe.player.playqueue.events.PlayQueueEvent;
|
import org.schabi.newpipe.player.playqueue.events.PlayQueueEvent;
|
||||||
import org.schabi.newpipe.player.playqueue.events.RemoveEvent;
|
import org.schabi.newpipe.player.playqueue.events.RemoveEvent;
|
||||||
import org.schabi.newpipe.player.playqueue.events.ReorderEvent;
|
import org.schabi.newpipe.player.playqueue.events.ReorderEvent;
|
||||||
import org.schabi.newpipe.util.ServiceHelper;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -42,6 +41,7 @@ import io.reactivex.rxjava3.subjects.PublishSubject;
|
|||||||
import static org.schabi.newpipe.player.mediasource.FailedMediaSource.MediaSourceResolutionException;
|
import static org.schabi.newpipe.player.mediasource.FailedMediaSource.MediaSourceResolutionException;
|
||||||
import static org.schabi.newpipe.player.mediasource.FailedMediaSource.StreamInfoLoadException;
|
import static org.schabi.newpipe.player.mediasource.FailedMediaSource.StreamInfoLoadException;
|
||||||
import static org.schabi.newpipe.player.playqueue.PlayQueue.DEBUG;
|
import static org.schabi.newpipe.player.playqueue.PlayQueue.DEBUG;
|
||||||
|
import static org.schabi.newpipe.util.ServiceHelper.getCacheExpirationMillis;
|
||||||
|
|
||||||
public class MediaSourceManager {
|
public class MediaSourceManager {
|
||||||
@NonNull
|
@NonNull
|
||||||
@ -420,33 +420,38 @@ public class MediaSourceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Single<ManagedMediaSource> getLoadedMediaSource(@NonNull final PlayQueueItem stream) {
|
private Single<ManagedMediaSource> getLoadedMediaSource(@NonNull final PlayQueueItem stream) {
|
||||||
return stream.getStream().map(streamInfo -> {
|
return stream.getStream()
|
||||||
final var source = playbackListener.sourceOf(stream, streamInfo);
|
.map(streamInfo -> Optional
|
||||||
|
.ofNullable(playbackListener.sourceOf(stream, streamInfo))
|
||||||
return Optional.ofNullable(source)
|
.<ManagedMediaSource>flatMap(source ->
|
||||||
.flatMap(source1 -> MediaItemTag.from(source1.getMediaItem()))
|
MediaItemTag.from(source.getMediaItem())
|
||||||
.<ManagedMediaSource>map(tag -> {
|
.map(tag -> {
|
||||||
|
final int serviceId = streamInfo.getServiceId();
|
||||||
final long expiration = System.currentTimeMillis()
|
final long expiration = System.currentTimeMillis()
|
||||||
+ ServiceHelper.getCacheExpirationMillis(streamInfo.getServiceId());
|
+ getCacheExpirationMillis(serviceId);
|
||||||
return new LoadedMediaSource(source, tag, stream, expiration);
|
return new LoadedMediaSource(source, tag, stream,
|
||||||
|
expiration);
|
||||||
})
|
})
|
||||||
|
)
|
||||||
.orElseGet(() -> {
|
.orElseGet(() -> {
|
||||||
final String message = "Unable to resolve source from stream info. "
|
final String message = "Unable to resolve source from stream info. "
|
||||||
+ "URL: " + stream.getUrl() + ", "
|
+ "URL: " + stream.getUrl()
|
||||||
+ "audio count: " + streamInfo.getAudioStreams().size() + ", "
|
+ ", audio count: " + streamInfo.getAudioStreams().size()
|
||||||
+ "video count: " + streamInfo.getVideoOnlyStreams().size() + ", "
|
+ ", video count: " + streamInfo.getVideoOnlyStreams().size()
|
||||||
+ streamInfo.getVideoStreams().size();
|
+ ", " + streamInfo.getVideoStreams().size();
|
||||||
return FailedMediaSource.of(stream, new MediaSourceResolutionException(
|
return FailedMediaSource.of(stream,
|
||||||
message));
|
new MediaSourceResolutionException(message));
|
||||||
});
|
})
|
||||||
}).onErrorReturn(throwable -> {
|
)
|
||||||
|
.onErrorReturn(throwable -> {
|
||||||
if (throwable instanceof ExtractionException) {
|
if (throwable instanceof ExtractionException) {
|
||||||
return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable));
|
return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable));
|
||||||
}
|
}
|
||||||
// Non-source related error expected here (e.g. network),
|
// Non-source related error expected here (e.g. network),
|
||||||
// should allow retry shortly after the error.
|
// should allow retry shortly after the error.
|
||||||
return FailedMediaSource.of(stream, new Exception(throwable),
|
final long allowRetryIn = TimeUnit.MILLISECONDS.convert(3,
|
||||||
/*allowRetryIn=*/TimeUnit.MILLISECONDS.convert(3, TimeUnit.SECONDS));
|
TimeUnit.SECONDS);
|
||||||
|
return FailedMediaSource.of(stream, new Exception(throwable), allowRetryIn);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user