Skip to content

Commit d8a5d55

Browse files
committed
Fix choosing audio format to mux with video-only download
1 parent bed3516 commit d8a5d55

1 file changed

Lines changed: 19 additions & 35 deletions

File tree

app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.schabi.newpipe.extractor.stream.VideoStream;
1212
import org.schabi.newpipe.util.StreamItemAdapter.StreamInfoWrapper;
1313

14-
import java.util.Comparator;
1514
import java.util.List;
1615

1716
public class SecondaryStreamHelper<T extends Stream> {
@@ -43,42 +42,27 @@ public static AudioStream getAudioStreamFor(@NonNull final Context context,
4342
@NonNull final List<AudioStream> audioStreams,
4443
@NonNull final VideoStream videoStream) {
4544
final MediaFormat mediaFormat = videoStream.getFormat();
46-
if (mediaFormat == null) {
47-
return null;
48-
}
49-
50-
switch (mediaFormat) {
51-
case WEBM:
52-
case MPEG_4: // Is MPEG-4 DASH?
53-
break;
54-
default:
55-
return null;
56-
}
57-
58-
final boolean m4v = mediaFormat == MediaFormat.MPEG_4;
59-
final boolean isLimitingDataUsage = ListHelper.isLimitingDataUsage(context);
6045

61-
Comparator<AudioStream> comparator = ListHelper.getAudioFormatComparator(
62-
m4v ? MediaFormat.M4A : MediaFormat.WEBMA, isLimitingDataUsage);
63-
int preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank(
64-
audioStreams, comparator);
65-
66-
if (preferredAudioStreamIndex == -1) {
67-
if (m4v) {
68-
return null;
69-
}
70-
71-
comparator = ListHelper.getAudioFormatComparator(
72-
MediaFormat.WEBMA_OPUS, isLimitingDataUsage);
73-
preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank(
74-
audioStreams, comparator);
75-
76-
if (preferredAudioStreamIndex == -1) {
77-
return null;
78-
}
46+
if (mediaFormat == MediaFormat.WEBM) {
47+
return audioStreams
48+
.stream()
49+
.filter(audioStream -> audioStream.getFormat() == MediaFormat.WEBMA
50+
|| audioStream.getFormat() == MediaFormat.WEBMA_OPUS)
51+
.max(ListHelper.getAudioFormatComparator(MediaFormat.WEBMA,
52+
ListHelper.isLimitingDataUsage(context)))
53+
.orElse(null);
54+
55+
} else if (mediaFormat == MediaFormat.MPEG_4) {
56+
return audioStreams
57+
.stream()
58+
.filter(audioStream -> audioStream.getFormat() == MediaFormat.M4A)
59+
.max(ListHelper.getAudioFormatComparator(MediaFormat.M4A,
60+
ListHelper.isLimitingDataUsage(context)))
61+
.orElse(null);
62+
63+
} else {
64+
return null;
7965
}
80-
81-
return audioStreams.get(preferredAudioStreamIndex);
8266
}
8367

8468
public T getStream() {

0 commit comments

Comments
 (0)