diff --git a/app/build.gradle b/app/build.gradle
index e46fec9a6..e6e960d63 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -121,6 +121,7 @@ dependencies {
implementation 'androidx.biometric:biometric:1.1.0'
implementation 'androidx.room:room-runtime:2.6.1'
implementation 'androidx.media:media:1.7.0'
+ implementation ('com.github.anilbeesetti.nextlib:nextlib-media3ext:0.7.1') { exclude group: 'androidx.media3', module: 'media3-exoplayer' }
implementation 'cat.ereza:customactivityoncrash:2.4.0'
implementation 'com.github.bassaer:materialdesigncolors:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.16.0'
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
index f51815d6f..8b6bb1110 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
@@ -69,7 +69,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
private int scale;
private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
+ return mBinding.exo;
}
private IjkVideoView getIjk() {
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index ab36fcfd6..5c3921f9f 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -105,7 +105,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
}
private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
+ return mBinding.exo;
}
private IjkVideoView getIjk() {
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 7e1fd73a4..e217fbe0d 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
@@ -280,7 +280,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
+ return mBinding.exo;
}
private IjkVideoView getIjk() {
diff --git a/app/src/leanback/res/layout/activity_cast.xml b/app/src/leanback/res/layout/activity_cast.xml
index 8786dd095..14c219bc7 100644
--- a/app/src/leanback/res/layout/activity_cast.xml
+++ b/app/src/leanback/res/layout/activity_cast.xml
@@ -8,20 +8,11 @@
android:keepScreenOn="true">
-
-
+ app:surface_type="none" />
-
-
+ app:surface_type="none" />
-
-
+ app:surface_type="none" />
out) {
+ super.buildAudioRenderers(context, extensionRendererMode, mediaCodecSelector, enableDecoderFallback, audioSink, eventHandler, eventListener, out);
+ int extensionRendererIndex = out.size();
+ if (extensionRendererMode == EXTENSION_RENDERER_MODE_PREFER) {
+ extensionRendererIndex--;
+ }
+ try {
+ Renderer renderer = new FfmpegAudioRenderer(eventHandler, eventListener, audioSink);
+ out.add(extensionRendererIndex++, renderer);
+ Log.i(TAG, "Loaded FfmpegAudioRenderer.");
+ } catch (Exception e) {
+ throw new RuntimeException("Error instantiating Ffmpeg extension", e);
+ }
+ }
+
+ @Override
+ protected void buildVideoRenderers(@NonNull Context context, int extensionRendererMode, @NonNull MediaCodecSelector mediaCodecSelector, boolean enableDecoderFallback, @NonNull Handler eventHandler, @NonNull VideoRendererEventListener eventListener, long allowedVideoJoiningTimeMs, @NonNull ArrayList out) {
+ super.buildVideoRenderers(context, extensionRendererMode, mediaCodecSelector, enableDecoderFallback, eventHandler, eventListener, allowedVideoJoiningTimeMs, out);
+ int extensionRendererIndex = out.size();
+ try {
+ Renderer renderer = new FfmpegVideoRenderer(allowedVideoJoiningTimeMs, eventHandler, eventListener, MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY);
+ out.add(extensionRendererIndex++, renderer);
+ Log.i(TAG, "Loaded FfmpegVideoRenderer.");
+ } catch (Exception e) {
+ throw new RuntimeException("Error instantiating Ffmpeg extension", e);
+ }
+ }
+}
diff --git a/app/src/main/java/com/fongmi/android/tv/player/TrackNameProvider.java b/app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java
similarity index 99%
rename from app/src/main/java/com/fongmi/android/tv/player/TrackNameProvider.java
rename to app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java
index 4a15a7995..4c01bb7d3 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/TrackNameProvider.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/custom/TrackNameProvider.java
@@ -1,4 +1,4 @@
-package com.fongmi.android.tv.player;
+package com.fongmi.android.tv.player.custom;
import android.content.res.Resources;
import android.text.TextUtils;
diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
index 689a229c5..f1cbb6d0c 100644
--- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
+++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java
@@ -20,7 +20,7 @@ import com.fongmi.android.tv.bean.Sub;
import com.fongmi.android.tv.bean.Track;
import com.fongmi.android.tv.databinding.DialogTrackBinding;
import com.fongmi.android.tv.player.Players;
-import com.fongmi.android.tv.player.TrackNameProvider;
+import com.fongmi.android.tv.player.custom.TrackNameProvider;
import com.fongmi.android.tv.ui.adapter.TrackAdapter;
import com.fongmi.android.tv.ui.custom.SpaceItemDecoration;
import com.fongmi.android.tv.utils.FileChooser;
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index 4e472e40c..9bc2f5be3 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -117,7 +117,7 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
}
private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
+ return mBinding.exo;
}
private IjkVideoView getIjk() {
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 5c8e7243e..0e86fc6a5 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
@@ -249,7 +249,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private PlayerView getExo() {
- return Setting.getRender() == 0 ? mBinding.surface : mBinding.texture;
+ return mBinding.exo;
}
private IjkVideoView getIjk() {
diff --git a/app/src/mobile/res/layout-sw600dp/activity_video.xml b/app/src/mobile/res/layout-sw600dp/activity_video.xml
index 277392001..96b0a5333 100644
--- a/app/src/mobile/res/layout-sw600dp/activity_video.xml
+++ b/app/src/mobile/res/layout-sw600dp/activity_video.xml
@@ -22,20 +22,11 @@
android:focusable="true">
-
-
+ app:surface_type="none" />
-
-
+ app:surface_type="none" />
-
-
+ app:surface_type="none" />