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" />