From dda659624d7921cd3df5b86e95dd66e1a2f3d4bf Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sun, 8 Feb 2026 14:06:04 +0100 Subject: [PATCH] enforce avc and acc codecs when selecting compatible mode --- .../settings/ProcessingSettingsFragment.kt | 29 +++++++++++++++++-- .../ytdl/util/extractors/ytdlp/YTDLPUtil.kt | 7 +---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt index fad03e5e..5185534f 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt @@ -4,9 +4,11 @@ import android.annotation.SuppressLint import android.os.Bundle import androidx.navigation.fragment.findNavController import androidx.preference.EditTextPreference +import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceManager import androidx.preference.SwitchPreferenceCompat +import com.afollestad.materialdialogs.utils.MDUtil.getStringArray import com.deniscerri.ytdl.R import com.deniscerri.ytdl.util.UiUtil @@ -100,9 +102,15 @@ class ProcessingSettingsFragment : BaseSettingsFragment() { } } + val audioCodecPref = findPreference("audio_codec") + val videoCodecPref = findPreference("video_codec") + val recodeVideoPreference = findPreference("recode_video")!! val compatibleVideoPreference = findPreference("compatible_video")!! + audioCodecPref?.isEnabled = !compatibleVideoPreference.isChecked + videoCodecPref?.isEnabled = !compatibleVideoPreference.isChecked + recodeVideoPreference.setOnPreferenceClickListener { if (compatibleVideoPreference.isChecked && recodeVideoPreference.isChecked) { compatibleVideoPreference.performClick() @@ -111,8 +119,25 @@ class ProcessingSettingsFragment : BaseSettingsFragment() { } compatibleVideoPreference.setOnPreferenceClickListener { - if (compatibleVideoPreference.isChecked && recodeVideoPreference.isChecked) { - recodeVideoPreference.performClick() + audioCodecPref?.isEnabled = !compatibleVideoPreference.isChecked + videoCodecPref?.isEnabled = !compatibleVideoPreference.isChecked + + if (compatibleVideoPreference.isChecked) { + if (recodeVideoPreference.isChecked) { + recodeVideoPreference.performClick() + } + + val audioCodecs = requireContext().getStringArray(R.array.audio_codec) + val audioCodecValues = requireContext().getStringArray(R.array.audio_codec_values) + val videoCodecs = requireContext().getStringArray(R.array.video_codec) + val videoCodecValues = requireContext().getStringArray(R.array.video_codec_values) + + val newAudioCodec = "M4A" + val newVideoCodec = "AVC (H264)" + + editor.putString("audio_codec", audioCodecValues[audioCodecs.indexOf(newAudioCodec)]).apply() + editor.putString("video_codec", videoCodecValues[videoCodecs.indexOf(newVideoCodec)]).apply() + requireActivity().recreate() } true } diff --git a/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt index 34d93317..794eaad5 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt @@ -1280,12 +1280,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co val preferredCodec = sharedPreferences.getString("video_codec", "") val vCodecPrefIndex = context.getStringArray(R.array.video_codec_values).indexOf(preferredCodec) - var vCodecPref = context.getStringArray(R.array.video_codec_values_ytdlp)[vCodecPrefIndex] - - if (downloadItem.videoPreferences.compatibilityMode) { - vCodecPref = "h264" - aCodecPref = "aac" - } + val vCodecPref = context.getStringArray(R.array.video_codec_values_ytdlp)[vCodecPrefIndex] val defaultFormats = context.resources.getStringArray(R.array.video_formats_values) val usingGenericFormat = defaultFormats.contains(videoF) || downloadItem.allFormats.isEmpty() || downloadItem.allFormats == formatUtil.getGenericVideoFormats(context.resources)