module.exports = function transcodeStandardiseAudioCodecs(file, audioEncoder) {
  //Function required responses
  // preset
  // processFile
  // note

  try {
    var audioIdx = -1;
    var hasNonSpecifiedAudioCodecStream = false;
    var ffmpegCommandInsert = "";
    var audioCodec = audioEncoder;

    if (audioEncoder == "dca") {
      audioCodec = "dts";
    }

    if (audioEncoder == "libmp3lame") {
      audioCodec = "mp3";
    }

    for (var i = 0; i < file.ffProbeData.streams.length; i++) {
      try {
        if (file.ffProbeData.streams[i].codec_type.toLowerCase() == "audio") {
          audioIdx++;
        }
      } catch (err) {}

      try {
        if (
          file.ffProbeData.streams[i].codec_type.toLowerCase() == "audio" &&
          file.ffProbeData.streams[i].codec_name != audioCodec
        ) {
          ffmpegCommandInsert += ` -c:a:${audioIdx} ${audioEncoder}`;
          hasNonSpecifiedAudioCodecStream = true;
        }
      } catch (err) {}
    }

    if (hasNonSpecifiedAudioCodecStream === true) {
      return {
        preset: `,-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy ${ffmpegCommandInsert}`,
        processFile: true,
        note: `File has audio streams which aren't in ${audioCodec} \n`,
      };
    }

    return {
      preset: "",
      processFile: false,
      note: `File does not have any audio streams which aren't in ${audioCodec} \n`,
    };
  } catch (err) {
    return {
      preset: "",
      processFile: false,
      note: `library.actions.transcodeStandardiseAudioCodecs error: ${err} \n`,
    };
  }
};
