<div dir="ltr"><div><font face="monospace, monospace"><br></font></div><font face="monospace, monospace">Allow users to transcode x265 encoded videos for playback on Chromecast version 1 and 2, as only Chromecast Ultra supports HEVC (H.265).<br><br>---<br> modules/stream_out/chromecast/cast.cpp | 12 +++++++++---<br> 1 file changed, 9 insertions(+), 3 deletions(-)<br><br>diff --git a/modules/stream_out/chromecast/cast.cpp b/modules/stream_out/chromecast/cast.cpp<br>index 2ef26d8eb4..b567b7a001 100644<br>--- a/modules/stream_out/chromecast/cast.cpp<br>+++ b/modules/stream_out/chromecast/cast.cpp<br>@@ -115,7 +115,7 @@ struct sout_stream_sys_t<br>         vlc_mutex_destroy(&lock);<br>     }<br><br>-    bool canDecodeVideo( vlc_fourcc_t i_codec ) const;<br>+    bool canDecodeVideo( sout_stream_t* p_stream, vlc_fourcc_t i_codec ) const;<br>     bool canDecodeAudio( sout_stream_t* p_stream, vlc_fourcc_t i_codec,<br>                          const audio_format_t* p_fmt ) const;<br>     bool startSoutChain(sout_stream_t* p_stream,<br>@@ -203,6 +203,9 @@ static const char *const ppsz_sout_options[] = {<br> #define PERF_LONGTEXT N_( "Display a performance warning when transcoding" )<br> #define AUDIO_PASSTHROUGH_TEXT N_( "Enable Audio passthrough" )<br> #define AUDIO_PASSTHROUGH_LONGTEXT N_( "Disable if your receiver does not support Dolby®." )<br>+#define FORCE_TRANSCODE_TEXT N_( "Transcode x265 videos" )<br>+#define FORCE_TRANSCODE_LONGTEXT N_( "Enable transcoding of x265 encoded videos." )<br>+#define FORCE_TRANSCODE_DEFAULT true<br><br> enum {<br>     CONVERSION_QUALITY_HIGH = 0,<br>@@ -266,6 +269,7 @@ vlc_module_begin ()<br>     add_integer(SOUT_CFG_PREFIX "show-perf-warning", 1, PERF_TEXT, PERF_LONGTEXT, true )<br>         change_private()<br>     add_bool(SOUT_CFG_PREFIX "audio-passthrough", false, AUDIO_PASSTHROUGH_TEXT, AUDIO_PASSTHROUGH_LONGTEXT, false )<br>+    add_bool(SOUT_CFG_PREFIX "force-transcode", FORCE_TRANSCODE_DEFAULT, FORCE_TRANSCODE_TEXT, FORCE_TRANSCODE_LONGTEXT, false)<br>     add_integer(SOUT_CFG_PREFIX "conversion-quality", CONVERSION_QUALITY_DEFAULT,<br>                 CONVERSION_QUALITY_TEXT, CONVERSION_QUALITY_LONGTEXT, false );<br>         change_integer_list(conversion_quality_list, conversion_quality_list_text)<br>@@ -803,10 +807,12 @@ static void Del(sout_stream_t *p_stream, void *_id)<br>  * Supported formats: <a href="https://developers.google.com/cast/docs/media">https://developers.google.com/cast/docs/media</a><br>  */<br><br>-bool sout_stream_sys_t::canDecodeVideo( vlc_fourcc_t i_codec ) const<br>+bool sout_stream_sys_t::canDecodeVideo( sout_stream_t *p_stream, vlc_fourcc_t i_codec ) const<br> {<br>     if( transcoding_state & TRANSCODING_VIDEO )<br>         return false;<br>+    if( i_codec == VLC_CODEC_HEVC )<br>+        return !(var_InheritBool( p_stream, SOUT_CFG_PREFIX "force-transcode" ));<br>     return i_codec == VLC_CODEC_H264 || i_codec == VLC_CODEC_HEVC<br>         || i_codec == VLC_CODEC_VP8 || i_codec == VLC_CODEC_VP9;<br> }<br>@@ -1236,7 +1242,7 @@ bool sout_stream_sys_t::UpdateOutput( sout_stream_t *p_stream )<br>         {<br>             if (p_es->i_cat == VIDEO_ES && p_original_video == NULL)<br>             {<br>-                if (!canDecodeVideo( p_es->i_codec ))<br>+                if (!canDecodeVideo( p_stream, p_es->i_codec ))<br>                 {<br>                     msg_Dbg( p_stream, "can't remux video track %d codec %4.4s",<br>                              p_es->i_id, (const char*)&p_es->i_codec );<br>--<br>2.17.1</font></div>