[Android] Apply Chromecast options to LibVLC

Jean-Baptiste Kempf jb at videolan.org
Tue Jan 23 19:44:57 CET 2018


Why not on the media?

On Tue, 23 Jan 2018, at 18:31, Geoffrey Métais wrote:
> vlc-android | branch: chromecast | Geoffrey Métais 
> <geoffrey.metais at gmail.com> | Tue Jan 23 10:51:43 2018 +0100| 
> [7e8506d0f60e0f79245cfad69c742f7ab229632e] | committer: Geoffrey Métais
> 
> Apply Chromecast options to LibVLC
> 
> > https://code.videolan.org/videolan/vlc-android/commit/7e8506d0f60e0f79245cfad69c742f7ab229632e
> ---
> 
>  .../vlc/gui/preferences/PreferencesCasting.kt         | 19 ++++++++++++++++++-
>  vlc-android/src/org/videolan/vlc/util/VLCOptions.java | 15 ++++++---------
>  2 files changed, 24 insertions(+), 10 deletions(-)
> 
> diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/
> PreferencesCasting.kt b/vlc-android/src/org/videolan/vlc/gui/
> preferences/PreferencesCasting.kt
> index 2137dbced..2d15c34cf 100644
> --- a/vlc-android/src/org/videolan/vlc/gui/preferences/
> PreferencesCasting.kt
> +++ b/vlc-android/src/org/videolan/vlc/gui/preferences/
> PreferencesCasting.kt
> @@ -22,11 +22,28 @@
>   */
>  package org.videolan.vlc.gui.preferences
>  
> +import android.content.SharedPreferences
> +import android.os.Bundle
>  import org.videolan.vlc.R
> +import org.videolan.vlc.util.VLCInstance
>  
> -class PreferencesCasting : BasePreferenceFragment() {
> +class PreferencesCasting : BasePreferenceFragment(), 
> SharedPreferences.OnSharedPreferenceChangeListener {
>  
>      override fun getTitleId() = R.string.casting_category
>  
>      override fun getXml() = R.xml.preferences_casting
> +
> +    override fun onCreate(savedInstanceState: Bundle?) {
> +        super.onCreate(savedInstanceState)
> +        
> preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this)
> +    }
> +
> +    override fun onSharedPreferenceChanged(sharedPreferences: 
> SharedPreferences?, key: String?) {
> +        when (key) {
> +            "casting_passthrough", "casting_quality" -> {
> +                VLCInstance.restart()
> +                (activity as? 
> PreferencesActivity)?.restartMediaPlayer()
> +            }
> +        }
> +    }
>  }
> \ No newline at end of file
> diff --git a/vlc-android/src/org/videolan/vlc/util/VLCOptions.java b/
> vlc-android/src/org/videolan/vlc/util/VLCOptions.java
> index 1438e9efc..e10677ad7 100644
> --- a/vlc-android/src/org/videolan/vlc/util/VLCOptions.java
> +++ b/vlc-android/src/org/videolan/vlc/util/VLCOptions.java
> @@ -31,10 +31,9 @@ import org.videolan.libvlc.MediaPlayer;
>  import org.videolan.libvlc.util.AndroidUtil;
>  import org.videolan.libvlc.util.HWDecoderUtil;
>  import org.videolan.libvlc.util.VLCUtil;
> +import org.videolan.medialibrary.media.MediaWrapper;
>  import org.videolan.vlc.R;
> -import org.videolan.vlc.RendererDelegate;
>  import org.videolan.vlc.VLCApplication;
> -import org.videolan.medialibrary.media.MediaWrapper;
>  
>  import java.io.File;
>  import java.util.ArrayList;
> @@ -126,7 +125,11 @@ public class VLCOptions {
>          options.add("--keystore-file");
>          options.add(new File(context.getDir("keystore", 
> Context.MODE_PRIVATE), "file").getAbsolutePath());
>  
> +        //Chromecast
>          options.add(verboseMode ? "-vv" : "-v");
> +        if (pref.getBoolean("casting_passthrough", true)) 
> options.add("--sout-chromecast-audio-passthrough");
> +        else options.add("--no-sout-chromecast-audio-passthrough");
> +        options.add("--sout-chromecast-conversion-
> quality="+pref.getString("casting_quality", "2"));
>  
>          return options;
>      }
> @@ -181,10 +184,10 @@ public class VLCOptions {
>          boolean noVideo = (flags & MediaWrapper.MEDIA_VIDEO) == 0;
>          final boolean paused = (flags & MediaWrapper.MEDIA_PAUSED) != 
> 0;
>          int hardwareAcceleration = HW_ACCELERATION_DISABLED;
> +        final SharedPreferences pref = 
> PreferenceManager.getDefaultSharedPreferences(context);
>  
>          if (!noHardwareAcceleration) {
>              try {
> -                final SharedPreferences pref = 
> PreferenceManager.getDefaultSharedPreferences(context);
>                  hardwareAcceleration = 
> Integer.parseInt(pref.getString("hardware_acceleration", "-1"));
>              } catch (NumberFormatException ignored) {}
>          }
> @@ -200,12 +203,6 @@ public class VLCOptions {
>  
>          if (noVideo) media.addOption(":no-video");
>          if (paused) media.addOption(":start-paused");
> -
> -        if (RendererDelegate.INSTANCE.getSelectedRenderer() != null) {
> -            final SharedPreferences pref = 
> PreferenceManager.getDefaultSharedPreferences(context);
> -            media.addOption(":sout-chromecast-audio-
> passthrough="+pref.getBoolean("casting_passthrough", true));
> -            media.addOption(":sout-chromecast-conversion-
> quality="+pref.getString("casting_quality", "2"));
> -        }
>      }
>  
>      private static MediaPlayer.Equalizer 
> getEqualizerSetFromSettings(SharedPreferences pref) {
> 
> _______________________________________________
> Android mailing list
> Android at videolan.org
> https://mailman.videolan.org/listinfo/android


-- 
Jean-Baptiste Kempf -  President
+33 672 704 734


More information about the Android mailing list