/**
   * This method populates the supplied {@link OutputParams} object with the correct audio track
   * (aid) based on the MediaInfo metadata and PMS configuration settings.
   *
   * @param media The MediaInfo metadata for the file.
   * @param params The parameters to populate.
   */
  public static void setAudioOutputParameters(DLNAMediaInfo media, OutputParams params) {
    PmsConfiguration configuration = PMS.getConfiguration(params);
    if (params.aid == null && media != null && media.getFirstAudioTrack() != null) {
      // check for preferred audio
      DLNAMediaAudio dtsTrack = null;
      StringTokenizer st = new StringTokenizer(configuration.getAudioLanguages(), ",");
      while (st.hasMoreTokens()) {
        String lang = st.nextToken().trim();
        LOGGER.trace("Looking for an audio track with lang: " + lang);
        for (DLNAMediaAudio audio : media.getAudioTracksList()) {
          if (audio.matchCode(lang)) {
            params.aid = audio;
            LOGGER.trace("Matched audio track: " + audio);
            return;
          }

          if (dtsTrack == null && audio.isDTS()) {
            dtsTrack = audio;
          }
        }
      }

      // preferred audio not found, take a default audio track, dts first if available
      if (dtsTrack != null) {
        params.aid = dtsTrack;
        LOGGER.trace("Found priority audio track with DTS: " + dtsTrack);
      } else {
        params.aid = media.getAudioTracksList().get(0);
        LOGGER.trace("Chose a default audio track: " + params.aid);
      }
    }
  }