From 8cd95b5039704419da520095bf8da26fe7b5cd4f Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Sun, 11 May 2025 09:39:52 +0300 Subject: [PATCH] player: add custom pitch values --- .../controllers/HQDialogController.java | 2 +- .../controllers/PlayerUIController.java | 2 +- .../common/utils/AppDialogUtil.java | 29 +++++++++++++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/HQDialogController.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/HQDialogController.java index 403cc0278..e1decd2ec 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/HQDialogController.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/HQDialogController.java @@ -116,7 +116,7 @@ public class HQDialogController extends BasePlayerController { } private void addPitchEffectCategory() { - addCategoryInt(AppDialogUtil.createPitchEffectCategory(getContext(), getPlayer(), getPlayerData())); + addCategoryInt(AppDialogUtil.createPitchEffectCategory(getContext())); } private void addAudioLanguage() { diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/PlayerUIController.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/PlayerUIController.java index 99492269c..ce4d9e1cf 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/PlayerUIController.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/PlayerUIController.java @@ -967,7 +967,7 @@ public class PlayerUIController extends BasePlayerController { applySoundOff(getPlayerData().getPlayerVolume() == 0 ? PlayerUI.BUTTON_OFF : PlayerUI.BUTTON_ON); getPlayer().setVolume(getPlayerData().getPlayerVolume()); }); - OptionCategory pitchEffectCategory = AppDialogUtil.createPitchEffectCategory(getContext(), getPlayer(), getPlayerData()); + OptionCategory pitchEffectCategory = AppDialogUtil.createPitchEffectCategory(getContext()); settingsPresenter.appendCategory(audioVolumeCategory); settingsPresenter.appendCategory(pitchEffectCategory); settingsPresenter.showDialog(getContext().getString(R.string.player_volume)); diff --git a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java index 7547670f3..3f2f317ca 100644 --- a/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java +++ b/common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java @@ -28,6 +28,7 @@ import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.OptionItem; import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.UiOptionItem; import com.liskovsoft.smartyoutubetv2.common.app.presenters.AppDialogPresenter; import com.liskovsoft.smartyoutubetv2.common.app.presenters.BrowsePresenter; +import com.liskovsoft.smartyoutubetv2.common.app.presenters.PlaybackPresenter; import com.liskovsoft.smartyoutubetv2.common.app.presenters.dialogs.menu.VideoMenuPresenter.VideoMenuCallback; import com.liskovsoft.smartyoutubetv2.common.app.presenters.dialogs.menu.providers.channelgroup.ChannelGroupServiceWrapper; import com.liskovsoft.smartyoutubetv2.common.app.views.ViewManager; @@ -443,13 +444,33 @@ public class AppDialogUtil { return OptionCategory.from(AUDIO_VOLUME_ID, OptionCategory.TYPE_RADIO_LIST, title, options); } - public static OptionCategory createPitchEffectCategory(Context context, PlayerManager playerManager, PlayerData playerData) { + public static OptionCategory createPitchEffectCategory(Context context) { String title = context.getString(R.string.pitch_effect); List options = new ArrayList<>(); - for (int pitchRaw : Helpers.range(1, 20 * 4, 1)) { - float pitch = pitchRaw / (10f * 4); + //for (int pitchRaw : Helpers.range(1, 20 * 4, 1)) { + // float pitch = pitchRaw / (10f * 4); + // options.add(UiOptionItem.from(Helpers.toString(pitch), + // optionItem -> { + // playerManager.setPitch(pitch); + // playerData.setPitch(pitch); + // }, + // Helpers.floatEquals(pitch, playerManager.getPitch()))); + //} + + addPitches(context, options, Helpers.range(0.025f, 0.975f, 0.025f)); + addPitches(context, options, new float[]{ 0.985f, 0.990f, 0.995f }); // Custom pitches + addPitches(context, options, Helpers.range(1f, 2f, 0.025f)); + + return OptionCategory.from(PITCH_EFFECT_ID, OptionCategory.TYPE_RADIO_LIST, title, options); + } + + private static void addPitches(Context context, List options, float[] pitchList) { + PlayerManager playerManager = PlaybackPresenter.instance(context).getPlayer(); + PlayerData playerData = PlayerData.instance(context); + + for (float pitch : pitchList) { options.add(UiOptionItem.from(Helpers.toString(pitch), optionItem -> { playerManager.setPitch(pitch); @@ -457,8 +478,6 @@ public class AppDialogUtil { }, Helpers.floatEquals(pitch, playerManager.getPitch()))); } - - return OptionCategory.from(PITCH_EFFECT_ID, OptionCategory.TYPE_RADIO_LIST, title, options); } public static OptionCategory createSubtitleStylesCategory(Context context) {