vlc | branch: master | Steve Lhomme <rob...@ycbcr.xyz> | Thu Apr 5 09:49:44 2018 +0200| [74ff08ca3b101b98103df5c85b800b671f44e9e7] | committer: Steve Lhomme
chromecast: try to encode with QSV if possible It will be handled by the GPU so use less resource. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=74ff08ca3b101b98103df5c85b800b671f44e9e7 --- modules/stream_out/chromecast/cast.cpp | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/modules/stream_out/chromecast/cast.cpp b/modules/stream_out/chromecast/cast.cpp index 625b9306f9..8b1c690dd2 100644 --- a/modules/stream_out/chromecast/cast.cpp +++ b/modules/stream_out/chromecast/cast.cpp @@ -929,6 +929,45 @@ static std::string GetVencVPXOption( sout_stream_t * /* p_stream */, return "venc=vpx{quality-mode=1}"; } +static std::string GetVencQSVH264Option( sout_stream_t * /* p_stream */, + const video_format_t * /* p_vid */, + int i_quality ) +{ + std::stringstream ssout; + static const char video_target_usage_quality[] = "quality"; + static const char video_target_usage_balanced[] = "balanced"; + static const char video_target_usage_speed[] = "speed"; + static const char video_bitrate_high[] = "vb=8000000"; + static const char video_bitrate_low[] = "vb=3000000"; + const char *psz_video_target_usage; + const char *psz_video_bitrate; + + switch ( i_quality ) + { + case CONVERSION_QUALITY_HIGH: + psz_video_target_usage = video_target_usage_quality; + psz_video_bitrate = video_bitrate_high; + break; + case CONVERSION_QUALITY_MEDIUM: + psz_video_target_usage = video_target_usage_balanced; + psz_video_bitrate = video_bitrate_high; + break; + case CONVERSION_QUALITY_LOW: + psz_video_target_usage = video_target_usage_balanced; + psz_video_bitrate = video_bitrate_low; + break; + default: + case CONVERSION_QUALITY_LOWCPU: + psz_video_target_usage = video_target_usage_speed; + psz_video_bitrate = video_bitrate_low; + break; + } + + ssout << "venc=qsv{target-usage=" << psz_video_target_usage << + "}," << psz_video_bitrate; + return ssout.str(); +} + static std::string GetVencX264Option( sout_stream_t * /* p_stream */, const video_format_t *p_vid, int i_quality ) @@ -1008,6 +1047,7 @@ static struct #ifdef __APPLE__ { .fcc = VLC_CODEC_H264, .get_opt = GetVencAvcodecVTOption }, #endif + { .fcc = VLC_CODEC_H264, .get_opt = GetVencQSVH264Option }, { .fcc = VLC_CODEC_H264, .get_opt = GetVencX264Option }, { .fcc = VLC_CODEC_VP8, .get_opt = GetVencVPXOption }, { .fcc = VLC_CODEC_H264, .get_opt = NULL }, _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits