public boolean setSubtitleTrack(int index, List<MediaStream> allStreams) { if (!nativeMode) { // find the relative order of our sub index within the sub tracks in VLC int vlcIndex = 1; // start at 1 to account for "disabled" for (MediaStream stream : allStreams) { if (stream.getType() == MediaStreamType.Subtitle && !stream.getIsExternal()) { if (stream.getIndex() == index) { break; } vlcIndex++; } } org.videolan.libvlc.MediaPlayer.TrackDescription vlcSub; try { vlcSub = getSubtitleTracks()[vlcIndex]; } catch (IndexOutOfBoundsException e) { TvApp.getApplication() .getLogger() .Error("Could not locate subtitle with index %s in vlc track info", index); return false; } catch (NullPointerException e) { TvApp.getApplication() .getLogger() .Error( "No subtitle tracks found in player trying to set subtitle with index %s in vlc track info", index); return false; } TvApp.getApplication().getLogger().Info("Setting Vlc sub to " + vlcSub.name); return mVlcPlayer.setSpuTrack(vlcSub.id); } return false; }
public void disableSubs() { if (!nativeMode && mVlcPlayer != null) mVlcPlayer.setSpuTrack(-1); }