mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-23 00:20:32 +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();
|
||||
}, () -> {
|
||||
// This is executed when the current stream info is not available.
|
||||
reloadPlayQueueManager();
|
||||
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.RemoveEvent;
|
||||
import org.schabi.newpipe.player.playqueue.events.ReorderEvent;
|
||||
import org.schabi.newpipe.util.ServiceHelper;
|
||||
|
||||
import java.util.Collection;
|
||||
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.StreamInfoLoadException;
|
||||
import static org.schabi.newpipe.player.playqueue.PlayQueue.DEBUG;
|
||||
import static org.schabi.newpipe.util.ServiceHelper.getCacheExpirationMillis;
|
||||
|
||||
public class MediaSourceManager {
|
||||
@NonNull
|
||||
@ -420,34 +420,39 @@ public class MediaSourceManager {
|
||||
}
|
||||
|
||||
private Single<ManagedMediaSource> getLoadedMediaSource(@NonNull final PlayQueueItem stream) {
|
||||
return stream.getStream().map(streamInfo -> {
|
||||
final var source = playbackListener.sourceOf(stream, streamInfo);
|
||||
|
||||
return Optional.ofNullable(source)
|
||||
.flatMap(source1 -> MediaItemTag.from(source1.getMediaItem()))
|
||||
.<ManagedMediaSource>map(tag -> {
|
||||
final long expiration = System.currentTimeMillis()
|
||||
+ ServiceHelper.getCacheExpirationMillis(streamInfo.getServiceId());
|
||||
return new LoadedMediaSource(source, tag, stream, expiration);
|
||||
})
|
||||
.orElseGet(() -> {
|
||||
final String message = "Unable to resolve source from stream info. "
|
||||
+ "URL: " + stream.getUrl() + ", "
|
||||
+ "audio count: " + streamInfo.getAudioStreams().size() + ", "
|
||||
+ "video count: " + streamInfo.getVideoOnlyStreams().size() + ", "
|
||||
+ streamInfo.getVideoStreams().size();
|
||||
return FailedMediaSource.of(stream, new MediaSourceResolutionException(
|
||||
message));
|
||||
});
|
||||
}).onErrorReturn(throwable -> {
|
||||
if (throwable instanceof ExtractionException) {
|
||||
return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable));
|
||||
}
|
||||
// Non-source related error expected here (e.g. network),
|
||||
// should allow retry shortly after the error.
|
||||
return FailedMediaSource.of(stream, new Exception(throwable),
|
||||
/*allowRetryIn=*/TimeUnit.MILLISECONDS.convert(3, TimeUnit.SECONDS));
|
||||
});
|
||||
return stream.getStream()
|
||||
.map(streamInfo -> Optional
|
||||
.ofNullable(playbackListener.sourceOf(stream, streamInfo))
|
||||
.<ManagedMediaSource>flatMap(source ->
|
||||
MediaItemTag.from(source.getMediaItem())
|
||||
.map(tag -> {
|
||||
final int serviceId = streamInfo.getServiceId();
|
||||
final long expiration = System.currentTimeMillis()
|
||||
+ getCacheExpirationMillis(serviceId);
|
||||
return new LoadedMediaSource(source, tag, stream,
|
||||
expiration);
|
||||
})
|
||||
)
|
||||
.orElseGet(() -> {
|
||||
final String message = "Unable to resolve source from stream info. "
|
||||
+ "URL: " + stream.getUrl()
|
||||
+ ", audio count: " + streamInfo.getAudioStreams().size()
|
||||
+ ", video count: " + streamInfo.getVideoOnlyStreams().size()
|
||||
+ ", " + streamInfo.getVideoStreams().size();
|
||||
return FailedMediaSource.of(stream,
|
||||
new MediaSourceResolutionException(message));
|
||||
})
|
||||
)
|
||||
.onErrorReturn(throwable -> {
|
||||
if (throwable instanceof ExtractionException) {
|
||||
return FailedMediaSource.of(stream, new StreamInfoLoadException(throwable));
|
||||
}
|
||||
// Non-source related error expected here (e.g. network),
|
||||
// should allow retry shortly after the error.
|
||||
final long allowRetryIn = TimeUnit.MILLISECONDS.convert(3,
|
||||
TimeUnit.SECONDS);
|
||||
return FailedMediaSource.of(stream, new Exception(throwable), allowRetryIn);
|
||||
});
|
||||
}
|
||||
|
||||
private void onMediaSourceReceived(@NonNull final PlayQueueItem item,
|
||||
|
Loading…
Reference in New Issue
Block a user