Interface PlayerModelFilter

All Known Implementing Classes:
AbstractPlayerModelFilter

public interface PlayerModelFilter
Interface which allows to filter Tracks, before the PlayerModel is built. An instance of the Filter should be added to the PlayerController before opening it.
Each method should remove the non-desired tracks from the provided Collections.
Example implementation:
 playerController.addPlayerModelFilter(new PlayerModelFilter() {
    @Override
    public void onVideoTracks(@NonNull Collection videoTracks) {
      // Build qualities, we want to keep only the highest bitrate track
      // for each resolution.
      SparseIntArray qualitiesMap = new SparseIntArray();
      for (VideoTrack track : videoTracks) {
          for (VideoTrackQuality quality : track.getQualities()) {
              final int bitrate = quality.getBitrate();
              final int width = quality.getWidth();
              if (bitrate < 0 || width < 0) {
                  continue;
              }
              qualitiesMap.put(width, Math.max(bitrate, qualitiesMap.get(width)));
          }
      }

      // Apply filter
      for (MutableVideoTrack track : videoTracks) {
          for (VideoTrackQuality quality : track.getQualities()) {
              if (qualitiesMap.get(quality.getWidth()) != quality.getBitrate()) {
                  track.removeQuality(quality);
              }
          }
      }
    }

    @Override
    public void onAudioTracks(@NonNull Collection audioTracks) {
      // Remove italian audio tracks
      for (Iterator iterator = audioTracks.iterator(); iterator.hasNext(); ) {
          AudioTrack audioTrack = iterator.next();
          if (audioTrack.getLanguage().toLowerCase().contains("it")) {
              iterator.remove();
            }
      }
    }

    @Override
    public void onSubtitleTracks(@NonNull Collection subtitleTracks) {
      // Remove French subtitle tracks
      for (Iterator iterator = subtitleTracks.iterator(); iterator.hasNext(); ) {
          SubtitleTrack subtitleTrack = iterator.next();
          if (subtitleTrack.getLanguage().toLowerCase().contains("fr")) {
              iterator.remove();
          }
      }
    }
 });

 playerController.open(playbackBundle);
 
Since:
4.2.26