Optimize soft decode

pull/585/head
FongMi 1 year ago
parent 7428c8dc0a
commit c252e52282
  1. 6
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  2. 7
      app/src/main/java/com/fongmi/android/tv/player/exo/ExoUtil.java

@ -563,7 +563,11 @@ public class Players implements Player.Listener, ParseCallback {
@Override
public void onTracksChanged(@NonNull Tracks tracks) {
if (!tracks.isEmpty()) PlayerEvent.track();
if (isHard() && ExoUtil.shouldSoftDecode(tracks)) {
ErrorEvent.url(PlaybackException.ERROR_CODE_DECODING_FAILED);
} else if (!tracks.isEmpty()) {
PlayerEvent.track();
}
}
@Override

@ -7,6 +7,7 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.view.accessibility.CaptioningManager;
import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.PlaybackException;
@ -64,6 +65,12 @@ public class ExoUtil {
return Setting.isCaption() ? CaptionStyleCompat.createFromCaptionStyle(((CaptioningManager) App.get().getSystemService(Context.CAPTIONING_SERVICE)).getUserStyle()) : new CaptionStyleCompat(Color.WHITE, Color.TRANSPARENT, Color.TRANSPARENT, CaptionStyleCompat.EDGE_TYPE_OUTLINE, Color.BLACK, null);
}
public static boolean shouldSoftDecode(Tracks tracks) {
if (!haveTrack(tracks, C.TRACK_TYPE_VIDEO)) return false;
for (Tracks.Group trackGroup : tracks.getGroups()) if (trackGroup.getType() == C.TRACK_TYPE_VIDEO && trackGroup.isSupported(true)) return false;
return true;
}
public static boolean haveTrack(Tracks tracks, int type) {
int count = 0;
for (Tracks.Group trackGroup : tracks.getGroups()) if (trackGroup.getType() == type) count += trackGroup.length;

Loading…
Cancel
Save