vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Mon Jan 15 
17:45:13 2018 +0100| [8958d4f7448aecdee42a9cd6e27e8ac6d2f7c222] | committer: 
Hugo Beauzée-Luyssen

chromecast: Add a setting to enable/disable casting multichannel PCM

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8958d4f7448aecdee42a9cd6e27e8ac6d2f7c222
---

 modules/stream_out/chromecast/cast.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/modules/stream_out/chromecast/cast.cpp 
b/modules/stream_out/chromecast/cast.cpp
index 0a4023bae7..a47d3afe18 100644
--- a/modules/stream_out/chromecast/cast.cpp
+++ b/modules/stream_out/chromecast/cast.cpp
@@ -83,7 +83,8 @@ struct sout_stream_sys_t
 
 private:
     bool UpdateOutput( sout_stream_t * );
-    vlc_fourcc_t transcodeAudioFourCC( const audio_format_t* p_fmt );
+    vlc_fourcc_t transcodeAudioFourCC( sout_stream_t* p_stream,
+                                       const audio_format_t* p_fmt );
 
 };
 
@@ -121,6 +122,8 @@ static const char *const ppsz_sout_options[] = {
 #define PERF_LONGTEXT N_( "Display a performance warning when transcoding" )
 #define AUDIO_PASSTHROUGH_TEXT N_( "Enable Audio passthrough" )
 #define AUDIO_PASSTHROUGH_LONGTEXT N_( "Disable if your receiver does not 
support Dolby®" )
+#define MULTICHANNEL_PCM_TEXT N_( "Multichannel PCM" )
+#define MULTICHANNEL_PCM_LONGTEXT N_( "Use PCM for multichannel audio." )
 
 #define IP_ADDR_TEXT N_("IP Address")
 #define IP_ADDR_LONGTEXT N_("IP Address of the Chromecast.")
@@ -145,6 +148,7 @@ vlc_module_begin ()
     add_string(SOUT_CFG_PREFIX "mime", "video/x-matroska", MIME_TEXT, 
MIME_LONGTEXT, false)
     add_integer(SOUT_CFG_PREFIX "show-perf-warning", 1, PERF_TEXT, 
PERF_LONGTEXT, true )
     add_bool(SOUT_CFG_PREFIX "audio-passthrough", false, 
AUDIO_PASSTHROUGH_TEXT, AUDIO_PASSTHROUGH_LONGTEXT, false )
+    add_bool(SOUT_CFG_PREFIX "multichannel-pcm", false, MULTICHANNEL_PCM_TEXT, 
MULTICHANNEL_PCM_LONGTEXT, false );
 
 
 vlc_module_end ()
@@ -259,9 +263,11 @@ bool sout_stream_sys_t::canDecodeAudio( sout_stream_t 
*p_stream,
            i_codec == VLC_CODEC_MP3;
 }
 
-vlc_fourcc_t sout_stream_sys_t::transcodeAudioFourCC( const audio_format_t* 
p_fmt )
+vlc_fourcc_t sout_stream_sys_t::transcodeAudioFourCC( sout_stream_t *p_stream,
+                                                      const audio_format_t* 
p_fmt )
 {
-    if ( p_fmt->i_channels > 2 )
+    if ( p_fmt->i_channels > 2 &&
+         var_InheritBool( p_stream, SOUT_CFG_PREFIX "multichannel-pcm" ) )
         return VLC_CODEC_S16L;
     return VLC_CODEC_MP3;
 }
@@ -376,7 +382,7 @@ bool sout_stream_sys_t::UpdateOutput( sout_stream_t 
*p_stream )
         char s_fourcc[5];
         if ( i_codec_audio == 0 && p_original_audio )
         {
-            i_codec_audio = transcodeAudioFourCC( &p_original_audio->audio );
+            i_codec_audio = transcodeAudioFourCC( p_stream, 
&p_original_audio->audio );
             msg_Dbg( p_stream, "Converting audio to %.4s", (const 
char*)&i_codec_audio );
             ssout << "acodec=";
             vlc_fourcc_to_char( i_codec_audio, s_fourcc );

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to