diff --git a/app/src/main/java/com/dkanada/gramophone/model/Song.java b/app/src/main/java/com/dkanada/gramophone/model/Song.java index 3dbcb538..1e48147a 100644 --- a/app/src/main/java/com/dkanada/gramophone/model/Song.java +++ b/app/src/main/java/com/dkanada/gramophone/model/Song.java @@ -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); diff --git a/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java b/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java index aa24ac2b..57595bba 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java +++ b/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java @@ -147,14 +147,21 @@ public class LocalPlayer implements Playback { List containers = PreferenceUtil.getInstance(context).getDirectPlayCodecs().stream() .map(codec -> codec.container.toLowerCase(Locale.ROOT)) .collect(Collectors.toList()); + List 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)