Fix playback if transcoding is disabled on the server

This commit is contained in:
jakobkukla 2022-03-20 17:38:39 +01:00
commit 318f07ebd0
2 changed files with 12 additions and 1 deletions

View file

@ -42,6 +42,8 @@ public class Song implements Parcelable {
public String container;
public String codec;
public boolean supportsTranscoding;
public int sampleRate;
public int bitRate;
public int bitDepth;
@ -89,6 +91,8 @@ public class Song implements Parcelable {
this.container = source.getContainer();
this.bitRate = source.getBitrate() != null ? source.getBitrate() : 0;
this.supportsTranscoding = source.getSupportsTranscoding();
if (source.getMediaStreams() != null && source.getMediaStreams().size() != 0) {
MediaStream stream = source.getMediaStreams().get(0);

View file

@ -147,14 +147,21 @@ public class LocalPlayer implements Playback {
List<String> containers = PreferenceUtil.getInstance(context).getDirectPlayCodecs().stream()
.map(codec -> codec.container.toLowerCase(Locale.ROOT))
.collect(Collectors.toList());
List<String> codecs = PreferenceUtil.getInstance(context).getDirectPlayCodecs().stream()
.map(codec -> codec.codec.toLowerCase(Locale.ROOT))
.collect(Collectors.toList());
String maxBitrate = PreferenceUtil.getInstance(context).getMaximumBitrate();
MediaItem mediaItem;
if (uri.toString().contains("file://") || (containers.contains(song.container.toLowerCase(Locale.ROOT)) && codecs.contains(song.codec.toLowerCase(Locale.ROOT)) && song.bitRate <= Integer.parseInt(maxBitrate))) {
boolean shouldDirectPlay =
containers.contains(song.container.toLowerCase(Locale.ROOT)) &&
codecs.contains(song.codec.toLowerCase(Locale.ROOT)) &&
song.bitRate <= Integer.parseInt(maxBitrate);
if (uri.toString().contains("file://") || shouldDirectPlay || !song.supportsTranscoding) {
mediaItem = new MediaItem.Builder()
.setUri(uri)
.setMediaId(song.id)