diff --git a/plugins/obs-ffmpeg/texture-amf.cpp b/plugins/obs-ffmpeg/texture-amf.cpp index a4ced5b78..8f6ab4941 100644 --- a/plugins/obs-ffmpeg/texture-amf.cpp +++ b/plugins/obs-ffmpeg/texture-amf.cpp @@ -891,10 +891,13 @@ static void amf_destroy(void *data) delete enc; } -static void check_texture_encode_capability(obs_encoder_t *encoder, bool hevc) +static void check_texture_encode_capability(obs_encoder_t *encoder, + amf_codec_type codec) { obs_video_info ovi; obs_get_video_info(&ovi); + bool avc = amf_codec_type::AVC == codec; + bool hevc = amf_codec_type::HEVC == codec; if (obs_encoder_scaling_enabled(encoder)) throw "Encoder scaling is active"; @@ -919,8 +922,8 @@ static void check_texture_encode_capability(obs_encoder_t *encoder, bool hevc) } } - if ((hevc && !caps[ovi.adapter].supports_hevc) || - (!hevc && !caps[ovi.adapter].supports_avc)) + if ((avc && !caps[ovi.adapter].supports_avc) || + (hevc && !caps[ovi.adapter].supports_hevc)) throw "Wrong adapter"; } @@ -1257,7 +1260,7 @@ static void amf_avc_create_internal(amf_base *enc, obs_data_t *settings) static void *amf_avc_create_texencode(obs_data_t *settings, obs_encoder_t *encoder) try { - check_texture_encode_capability(encoder, false); + check_texture_encode_capability(encoder, amf_codec_type::AVC); std::unique_ptr enc = std::make_unique(); enc->encoder = encoder; @@ -1589,7 +1592,7 @@ static void amf_hevc_create_internal(amf_base *enc, obs_data_t *settings) static void *amf_hevc_create_texencode(obs_data_t *settings, obs_encoder_t *encoder) try { - check_texture_encode_capability(encoder, true); + check_texture_encode_capability(encoder, amf_codec_type::HEVC); std::unique_ptr enc = std::make_unique(); enc->encoder = encoder;