Skip to content

Commit 327c3fc

Browse files
committed
🎨 控制跳过同一VSync渲染多帧
1 parent e258dcc commit 327c3fc

File tree

11 files changed

+95
-9
lines changed

11 files changed

+95
-9
lines changed

.idea/gradle.xml

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ compose-foundation = "1.7.0-beta07"
2222
tvMaterial = "1.0.0-rc01"
2323
navigationCompose = "2.7.7"
2424
minSdk = "21"
25-
targetSdk = "34"
26-
compileSdk = "34"
25+
targetSdk = "35"
26+
compileSdk = "35"
2727

2828
[libraries]
2929
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }

settings.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,9 @@ include(":core:util")
2626
include(":core:designsystem")
2727
include(":tv")
2828
include(":mobile")
29+
30+
val mediaSettingsFile = file("../media/core_settings.gradle")
31+
if (mediaSettingsFile.exists()) {
32+
(gradle as ExtensionAware).extra["androidxMediaModulePrefix"] = "media3:"
33+
apply(from = mediaSettingsFile)
34+
}

tv/build.gradle.kts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,16 @@ dependencies {
8787
implementation(libs.androidx.material.icons.extended)
8888

8989
// 播放器
90-
implementation(libs.androidx.media3.exoplayer)
91-
implementation(libs.androidx.media3.exoplayer.hls)
92-
implementation(libs.androidx.media3.exoplayer.rtsp)
90+
val mediaSettingsFile = file("../../media/core_settings.gradle")
91+
if (mediaSettingsFile.exists()) {
92+
implementation(project(":media3:lib-exoplayer"))
93+
implementation(project(":media3:lib-exoplayer-hls"))
94+
implementation(project(":media3:lib-exoplayer-rtsp"))
95+
} else {
96+
implementation(libs.androidx.media3.exoplayer)
97+
implementation(libs.androidx.media3.exoplayer.hls)
98+
implementation(libs.androidx.media3.exoplayer.rtsp)
99+
}
93100

94101
// 二维码
95102
implementation(libs.qrose)

tv/src/main/java/top/yogiczy/mytv/tv/ui/screens/settings/SettingsViewModel.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,14 @@ class SettingsViewModel : ViewModel() {
344344
Configs.videoPlayerStopPreviousMediaItem = value
345345
}
346346

347+
private var _videoPlayerSkipMultipleFramesOnSameVSync by mutableStateOf(false)
348+
var videoPlayerSkipMultipleFramesOnSameVSync: Boolean
349+
get() = _videoPlayerSkipMultipleFramesOnSameVSync
350+
set(value) {
351+
_videoPlayerSkipMultipleFramesOnSameVSync = value
352+
Configs.videoPlayerSkipMultipleFramesOnSameVSync = value
353+
}
354+
347355
init {
348356
// 删除过期的预约
349357
_epgChannelReserveList = EpgProgrammeReserveList(
@@ -394,5 +402,6 @@ class SettingsViewModel : ViewModel() {
394402
_videoPlayerAspectRatio = Configs.videoPlayerDisplayMode
395403
_videoPlayerForceAudioSoftDecode = Configs.videoPlayerForceAudioSoftDecode
396404
_videoPlayerRenderMode = Configs.videoPlayerRenderMode
405+
_videoPlayerSkipMultipleFramesOnSameVSync = Configs.videoPlayerSkipMultipleFramesOnSameVSync
397406
}
398407
}

tv/src/main/java/top/yogiczy/mytv/tv/ui/screens/settings/components/SettingsCategoryAbout.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ fun SettingsCategoryAbout(
4949
item {
5050
SettingsListItem(
5151
headlineContent = "应用版本",
52-
trailingContent = packageInfo.versionName,
52+
trailingContent = packageInfo.versionName ?: "",
5353
)
5454
}
5555

tv/src/main/java/top/yogiczy/mytv/tv/ui/screens/settings/components/SettingsCategoryVideoPlayer.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,19 @@ fun SettingsCategoryVideoPlayer(
6666
)
6767
}
6868

69+
item {
70+
SettingsListItem(
71+
headlineContent = "跳过多帧渲染",
72+
trailingContent = {
73+
Switch(settingsViewModel.videoPlayerSkipMultipleFramesOnSameVSync, null)
74+
},
75+
onSelected = {
76+
settingsViewModel.videoPlayerSkipMultipleFramesOnSameVSync =
77+
!settingsViewModel.videoPlayerSkipMultipleFramesOnSameVSync
78+
},
79+
)
80+
}
81+
6982
item {
7083
val popupManager = LocalPopupManager.current
7184
var visible by remember { mutableStateOf(false) }

tv/src/main/java/top/yogiczy/mytv/tv/ui/screens/update/UpdateScreen.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ fun UpdateScreen(
4242

4343
LaunchedEffect(Unit) {
4444
delay(3000)
45-
updateViewModel.checkUpdate(packageInfo.versionName, settingsViewModel.updateChannel)
45+
updateViewModel.checkUpdate(
46+
packageInfo.versionName ?: "0.0.0",
47+
settingsViewModel.updateChannel
48+
)
4649

4750
val latestRelease = updateViewModel.latestRelease
4851
if (

tv/src/main/java/top/yogiczy/mytv/tv/ui/screens/videoplayer/player/Media3VideoPlayer.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.media3.exoplayer.rtsp.RtspMediaSource
2323
import androidx.media3.exoplayer.source.MediaSource
2424
import androidx.media3.exoplayer.source.ProgressiveMediaSource
2525
import androidx.media3.exoplayer.util.EventLogger
26+
import androidx.media3.exoplayer.video.MediaCodecVideoRenderer
2627
import kotlinx.coroutines.CoroutineScope
2728
import kotlinx.coroutines.Job
2829
import kotlinx.coroutines.delay
@@ -65,6 +66,9 @@ class Media3VideoPlayer(
6566
else DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON
6667
)
6768

69+
70+
MediaCodecVideoRenderer.skipMultipleFramesOnSameVsync =
71+
Configs.videoPlayerSkipMultipleFramesOnSameVSync
6872
return ExoPlayer
6973
.Builder(context)
7074
.setRenderersFactory(renderersFactory)

0 commit comments

Comments
 (0)