[Android] Add a setting to cast audio only
Nicolas Pomepuy
git at videolan.org
Mon Jan 27 13:11:38 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Jan 16 09:39:52 2025 +0100| [ff1b167cdb42e211c84c1d6a1eef183480585ca9] | committer: Duncan McNamara
Add a setting to cast audio only
Fixes #3011
> https://code.videolan.org/videolan/vlc-android/commit/ff1b167cdb42e211c84c1d6a1eef183480585ca9
---
.../resources/src/main/java/org/videolan/resources/VLCOptions.kt | 2 ++
application/resources/src/main/res/values/strings.xml | 2 ++
application/vlc-android/res/xml/preferences_casting.xml | 6 ++++++
.../src/org/videolan/vlc/gui/preferences/PreferencesCasting.kt | 2 +-
.../vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt | 1 +
5 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/application/resources/src/main/java/org/videolan/resources/VLCOptions.kt b/application/resources/src/main/java/org/videolan/resources/VLCOptions.kt
index d8d161d259..b510cabda4 100644
--- a/application/resources/src/main/java/org/videolan/resources/VLCOptions.kt
+++ b/application/resources/src/main/java/org/videolan/resources/VLCOptions.kt
@@ -75,6 +75,7 @@ object VLCOptions {
val subtitlesEncoding = pref.getString("subtitle_text_encoding", "") ?: ""
val frameSkip = pref.getBoolean("enable_frame_skip", false)
val verboseMode = pref.getBoolean("enable_verbose_mode", true)
+ val castingAudioOnly = pref.getBoolean("casting_audio_only", false)
var deblocking = -1
try {
@@ -105,6 +106,7 @@ object VLCOptions {
val opengl = Integer.parseInt(pref.getString("opengl", "-1")!!)
+ if (castingAudioOnly) options.add("--no-sout-chromecast-video")
options.add(if (timeStreching) "--audio-time-stretch" else "--no-audio-time-stretch")
options.add("--avcodec-skiploopfilter")
options.add("" + deblocking)
diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index 217e36158d..48c4b77fea 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -495,6 +495,8 @@
<string name="casting_switch_title">Wireless casting</string>
<string name="casting_passthrough_title">Audio Passthrough</string>
<string name="casting_passthrough_summary">Let your TV manage audio rendering</string>
+ <string name="casting_audio_only">Audio only</string>
+ <string name="casting_audio_only_summary">Cast only audio, no video</string>
<string name="casting_conversion_quality_title">Conversion quality</string>
<string name="casting_conversion_quality_summary">Select the conversion quality when casting on remote screen</string>
<string name="casting_quality_high">High</string>
diff --git a/application/vlc-android/res/xml/preferences_casting.xml b/application/vlc-android/res/xml/preferences_casting.xml
index 7065f5470a..d6436934e6 100644
--- a/application/vlc-android/res/xml/preferences_casting.xml
+++ b/application/vlc-android/res/xml/preferences_casting.xml
@@ -12,6 +12,12 @@
android:switchTextOff="Disabled"
android:switchTextOn="Enabled"
android:title="@string/casting_switch_title"/>
+ <CheckBoxPreference
+ android:key="casting_audio_only"
+ android:defaultValue="false"
+ android:summary="@string/casting_audio_only_summary"
+ android:title="@string/casting_audio_only"
+ android:dependency="enable_casting"/>
<CheckBoxPreference
android:key="casting_passthrough"
android:defaultValue="false"
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesCasting.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesCasting.kt
index d922ad17cd..3095586990 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesCasting.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesCasting.kt
@@ -53,7 +53,7 @@ class PreferencesCasting : BasePreferenceFragment(), SharedPreferences.OnSharedP
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
when (key) {
- "casting_passthrough", "casting_quality" -> {
+ "casting_passthrough", "casting_quality", "casting_audio_only" -> {
lifecycleScope.launch {
VLCInstance.restart()
restartMediaPlayer()
diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
index bab4dd43c2..952a90aa0c 100644
--- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
@@ -541,6 +541,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
}
//todo in VLC 4.0, this should be done by using libvlc_media_player_set_time instead of start-time
media.addOption(":start-time=${start/1000L}")
+ media.addOption(":no-sout-chromecast-video")
VLCOptions.setMediaOptions(media, ctx, flags or mw.flags, PlaybackService.hasRenderer())
/* keeping only video during benchmark */
if (isBenchmark) {
More information about the Android
mailing list