Skip to content

Commit 4481dd7

Browse files
Merge pull request TeamNewPipe#13135 from dustdfg/player_loop_refactor
Misc player loop/stream refactors
2 parents 35b70c5 + 3a0a3a4 commit 4481dd7

File tree

3 files changed

+19
-32
lines changed

3 files changed

+19
-32
lines changed

app/src/main/java/org/schabi/newpipe/player/helper/PlayerHelper.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@
4949
import java.text.NumberFormat;
5050
import java.util.ArrayList;
5151
import java.util.Collections;
52-
import java.util.HashSet;
5352
import java.util.List;
5453
import java.util.Locale;
5554
import java.util.Objects;
5655
import java.util.Set;
5756
import java.util.concurrent.TimeUnit;
57+
import java.util.stream.Collectors;
5858

5959
public final class PlayerHelper {
6060
private static final FormattersProvider FORMATTERS_PROVIDER = new FormattersProvider();
@@ -87,11 +87,11 @@ public static void resetFormat() {
8787
}
8888

8989
@NonNull
90-
public static String getTimeString(final int milliSeconds) {
91-
final int seconds = (milliSeconds % 60000) / 1000;
92-
final int minutes = (milliSeconds % 3600000) / 60000;
93-
final int hours = (milliSeconds % 86400000) / 3600000;
94-
final int days = (milliSeconds % (86400000 * 7)) / 86400000;
90+
public static String getTimeString(final long milliSeconds) {
91+
final long seconds = (milliSeconds % 60000) / 1000;
92+
final long minutes = (milliSeconds % 3600000) / 60000;
93+
final long hours = (milliSeconds % 86400000) / 3600000;
94+
final long days = (milliSeconds % (86400000 * 7)) / 86400000;
9595

9696
final Formatters formatters = FORMATTERS_PROVIDER.formatters();
9797
if (days > 0) {
@@ -174,10 +174,9 @@ public static String resizeTypeOf(@NonNull final Context context,
174174
@Nullable
175175
public static PlayQueue autoQueueOf(@NonNull final StreamInfo info,
176176
@NonNull final List<PlayQueueItem> existingItems) {
177-
final Set<String> urls = new HashSet<>(existingItems.size());
178-
for (final PlayQueueItem item : existingItems) {
179-
urls.add(item.getUrl());
180-
}
177+
final Set<String> urls = existingItems.stream()
178+
.map(PlayQueueItem::getUrl)
179+
.collect(Collectors.toUnmodifiableSet());
181180

182181
final List<InfoItem> relatedItems = info.getRelatedItems();
183182
if (Utils.isNullOrEmpty(relatedItems)) {

app/src/main/java/org/schabi/newpipe/player/playqueue/SinglePlayQueue.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import org.schabi.newpipe.extractor.stream.StreamInfo;
66
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
77

8-
import java.util.ArrayList;
98
import java.util.List;
9+
import java.util.stream.Collectors;
1010

1111
public final class SinglePlayQueue extends PlayQueue {
1212
public SinglePlayQueue(final StreamInfoItem item) {
@@ -29,11 +29,7 @@ public SinglePlayQueue(@NonNull final List<StreamInfoItem> items, final int inde
2929
}
3030

3131
private static List<PlayQueueItem> playQueueItemsOf(@NonNull final List<StreamInfoItem> items) {
32-
final List<PlayQueueItem> playQueueItems = new ArrayList<>(items.size());
33-
for (final StreamInfoItem item : items) {
34-
playQueueItems.add(new PlayQueueItem(item));
35-
}
36-
return playQueueItems;
32+
return items.stream().map(PlayQueueItem::new).collect(Collectors.toList());
3733
}
3834

3935
@Override

app/src/main/java/org/schabi/newpipe/player/ui/MainPlayerUi.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import java.util.List;
7878
import java.util.Objects;
7979
import java.util.Optional;
80+
import java.util.stream.Collectors;
8081

8182
public final class MainPlayerUi extends VideoPlayerUi implements View.OnLayoutChangeListener {
8283
private static final String TAG = MainPlayerUi.class.getSimpleName();
@@ -749,13 +750,13 @@ public void onItemLongClick(@NonNull final StreamSegmentItem item, final int sec
749750
}
750751

751752
private int getNearestStreamSegmentPosition(final long playbackPosition) {
752-
int nearestPosition = 0;
753753
final List<StreamSegment> segments = player.getCurrentStreamInfo()
754754
.map(StreamInfo::getStreamSegments)
755755
.orElse(Collections.emptyList());
756756

757-
for (int i = 0; i < segments.size(); i++) {
758-
if (segments.get(i).getStartTimeSeconds() * 1000L > playbackPosition) {
757+
int nearestPosition = 0;
758+
for (final var segment : segments) {
759+
if (segment.getStartTimeSeconds() * 1000L > playbackPosition) {
759760
break;
760761
}
761762
nearestPosition++;
@@ -816,22 +817,13 @@ private void updateQueueTime(final int currentTime) {
816817
}
817818

818819
final int currentStream = playQueue.getIndex();
819-
int before = 0;
820-
int after = 0;
821-
822820
final List<PlayQueueItem> streams = playQueue.getStreams();
823-
final int nStreams = streams.size();
824821

825-
for (int i = 0; i < nStreams; i++) {
826-
if (i < currentStream) {
827-
before += streams.get(i).getDuration();
828-
} else {
829-
after += streams.get(i).getDuration();
830-
}
831-
}
822+
final long before = streams.subList(0, currentStream).stream()
823+
.collect(Collectors.summingLong(PlayQueueItem::getDuration)) * 1000;
832824

833-
before *= 1000;
834-
after *= 1000;
825+
final long after = streams.subList(currentStream, streams.size()).stream()
826+
.collect(Collectors.summingLong(PlayQueueItem::getDuration)) * 1000;
835827

836828
binding.itemsListHeaderDuration.setText(
837829
String.format("%s/%s",

0 commit comments

Comments
 (0)