diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java index 168958544..09bd544f7 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java @@ -26,6 +26,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B private ActivitySettingPlayerBinding mBinding; private String[] caption; private String[] player; + private String[] decode; private String[] render; private String[] scale; private String[] http; @@ -56,6 +57,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B mBinding.httpText.setText((http = ResUtil.getStringArray(R.array.select_exo_http))[Setting.getHttp()]); mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Setting.getScale()]); mBinding.playerText.setText((player = ResUtil.getStringArray(R.array.select_player))[Setting.getPlayer()]); + mBinding.decodeText.setText((decode = ResUtil.getStringArray(R.array.select_decode))[Setting.getDecode(Setting.getPlayer())]); mBinding.renderText.setText((render = ResUtil.getStringArray(R.array.select_render))[Setting.getRender()]); mBinding.captionText.setText((caption = ResUtil.getStringArray(R.array.select_caption))[Setting.isCaption() ? 1 : 0]); } @@ -68,6 +70,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B mBinding.scale.setOnClickListener(this::setScale); mBinding.buffer.setOnClickListener(this::onBuffer); mBinding.player.setOnClickListener(this::setPlayer); + mBinding.decode.setOnClickListener(this::setDecode); mBinding.render.setOnClickListener(this::setRender); mBinding.tunnel.setOnClickListener(this::setTunnel); mBinding.caption.setOnClickListener(this::setCaption); @@ -125,9 +128,17 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B int index = Setting.getPlayer(); Setting.putPlayer(index = index == player.length - 1 ? 0 : ++index); mBinding.playerText.setText(player[index]); + mBinding.decodeText.setText(decode[Setting.getDecode(index)]); setVisible(); } + private void setDecode(View view) { + int player = Setting.getPlayer(); + int index = Setting.getDecode(player); + Setting.putDecode(player, index = index == decode.length - 1 ? 0 : ++index); + mBinding.decodeText.setText(decode[index]); + } + private void setRender(View view) { int index = Setting.getRender(); Setting.putRender(index = index == render.length - 1 ? 0 : ++index); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 9fd750481..c59dcdc72 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1001,6 +1001,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void onPlayer() { mPlayers.togglePlayer(); setPlayerView(); + setDecodeView(); onRefresh(); } @@ -1364,6 +1365,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void nextPlayer() { mPlayers.nextPlayer(); setPlayerView(); + setDecodeView(); onRefresh(); } diff --git a/app/src/leanback/res/layout/activity_setting_player.xml b/app/src/leanback/res/layout/activity_setting_player.xml index 9f0289765..d3d53336e 100644 --- a/app/src/leanback/res/layout/activity_setting_player.xml +++ b/app/src/leanback/res/layout/activity_setting_player.xml @@ -41,6 +41,35 @@ + + + + + + + + 0) builder.setSubtitleConfigurations(getSubtitles(subs)); if (drm != null) builder.setDrmConfiguration(drm.get()); - builder.setAllowChunklessPreparation(Players.isHard()); + builder.setAllowChunklessPreparation(Players.isHard(Players.EXO)); if (mimeType != null) builder.setMimeType(mimeType); builder.setAds(Sniffer.getRegex(uri)); return builder.build(); diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index 6e814c670..280b7cabc 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -81,7 +81,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic private long position; private float speed; - private int decode; private int player; private int error; private int retry; @@ -91,8 +90,8 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic return type == EXO; } - public static boolean isHard() { - return Setting.getDecode() == HARD; + public static boolean isHard(int player) { + return Setting.getDecode(player) == HARD; } public boolean isExo() { @@ -105,7 +104,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic public Players init(Activity activity) { player = Setting.getPlayer(); - decode = Setting.getDecode(); builder = new StringBuilder(); runnable = ErrorEvent::timeout; formatter = new Formatter(builder, Locale.getDefault()); @@ -142,7 +140,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } private void setupIjk(IjkVideoView view) { - ijkPlayer = view.render(Setting.getRender()).decode(decode); + ijkPlayer = view.render(Setting.getRender()).decode(Setting.getDecode(IJK)); ijkPlayer.addListener(this); ijkPlayer.setPlayer(player); } @@ -191,12 +189,12 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic this.player = player; } - public int getDecode() { - return decode; + public int getDecode(int player) { + return Setting.getDecode(player); } - public void setDecode(int decode) { - this.decode = decode; + public void setDecode(int player, int decode) { + Setting.putDecode(player, decode); } public void setPosition(long position) { @@ -297,7 +295,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } public String getDecodeText() { - return ResUtil.getStringArray(R.array.select_decode)[decode]; + return ResUtil.getStringArray(R.array.select_decode)[Setting.getDecode(player)]; } public String setSpeed(float speed) { @@ -340,8 +338,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } public void toggleDecode() { - setDecode(decode == HARD ? SOFT : HARD); - Setting.putDecode(decode); + setDecode(player, getDecode(player) == HARD ? SOFT : HARD); } public String getPositionTime(long time) { diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c3807b5c2..dcc2ddd79 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -92,6 +92,7 @@ 播放核心 + 解码方式 渲染方式 缩放比例 字幕样式 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 5bfc150f1..10115dc52 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -92,6 +92,7 @@ 播放核心 + 解碼方式 渲染方式 縮放比例 字幕樣式 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 69fc8b3e7..dab3882ad 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,6 +92,7 @@ Player + Decode Render Scale Caption style diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 0424313e1..4d602bc55 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -403,6 +403,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void setDecodeView() { mBinding.control.action.decode.setText(mPlayers.getDecodeText()); + if (mControlDialog != null && mControlDialog.isVisible()) mControlDialog.updateDecode(); } private void setVideoView() { @@ -856,6 +857,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void onPlayer() { mPlayers.togglePlayer(); setPlayerView(); + setDecodeView(); setR1Callback(); onRefresh(); } @@ -1333,6 +1335,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void nextPlayer() { mPlayers.nextPlayer(); setPlayerView(); + setDecodeView(); onRefresh(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java index 1cd97c713..0a582558b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java @@ -215,6 +215,10 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.player.setText(parent.control.action.player.getText()); } + public void updateDecode() { + binding.decode.setText(parent.control.action.decode.getText()); + } + public void setParseVisible(boolean visible) { binding.parse.setVisibility(visible ? View.VISIBLE : View.GONE); binding.parseText.setVisibility(visible ? View.VISIBLE : View.GONE); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java index 50ad38c77..cdae5eeee 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java @@ -31,6 +31,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B private String[] background; private String[] caption; private String[] player; + private String[] decode; private String[] render; private String[] scale; private String[] http; @@ -62,6 +63,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.httpText.setText((http = ResUtil.getStringArray(R.array.select_exo_http))[Setting.getHttp()]); mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Setting.getScale()]); mBinding.playerText.setText((player = ResUtil.getStringArray(R.array.select_player))[Setting.getPlayer()]); + mBinding.decodeText.setText((decode = ResUtil.getStringArray(R.array.select_decode))[Setting.getDecode(Setting.getPlayer())]); mBinding.renderText.setText((render = ResUtil.getStringArray(R.array.select_render))[Setting.getRender()]); mBinding.captionText.setText((caption = ResUtil.getStringArray(R.array.select_caption))[Setting.isCaption() ? 1 : 0]); mBinding.backgroundText.setText((background = ResUtil.getStringArray(R.array.select_background))[Setting.getBackground()]); @@ -75,6 +77,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.scale.setOnClickListener(this::onScale); mBinding.buffer.setOnClickListener(this::onBuffer); mBinding.player.setOnClickListener(this::setPlayer); + mBinding.decode.setOnClickListener(this::setDecode); mBinding.render.setOnClickListener(this::setRender); mBinding.tunnel.setOnClickListener(this::setTunnel); mBinding.caption.setOnClickListener(this::setCaption); @@ -136,9 +139,17 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B int index = Setting.getPlayer(); Setting.putPlayer(index = index == player.length - 1 ? 0 : ++index); mBinding.playerText.setText(player[index]); + mBinding.decodeText.setText(decode[Setting.getDecode(index)]); setVisible(); } + private void setDecode(View view) { + int player = Setting.getPlayer(); + int index = Setting.getDecode(player); + Setting.putDecode(player, index = index == decode.length - 1 ? 0 : ++index); + mBinding.decodeText.setText(decode[index]); + } + private void setRender(View view) { int index = Setting.getRender(); Setting.putRender(index = index == render.length - 1 ? 0 : ++index); diff --git a/app/src/mobile/res/layout/fragment_setting_player.xml b/app/src/mobile/res/layout/fragment_setting_player.xml index 7fe2e4fc1..257a4febb 100644 --- a/app/src/mobile/res/layout/fragment_setting_player.xml +++ b/app/src/mobile/res/layout/fragment_setting_player.xml @@ -71,6 +71,35 @@ + + + + + + + +