// AUTOGENERATED COPYRIGHT HEADER START // Copyright (C) 2020-2023 Michael Fabian 'Xaymar' Dirks // AUTOGENERATED COPYRIGHT HEADER END #pragma once #include "common.hpp" #include "handler.hpp" extern "C" { #include "warning-disable.hpp" #include #include "warning-enable.hpp" } /* NVENC has multiple compression modes: - CBR: Constant Bitrate (rc=cbr) - VBR: Variable Bitrate (rc=vbr) - CQP: Constant QP (rc=cqp) - CQ: Constant Quality (rc=vbr b=0 maxrate=0 qmin=0 qmax=51 cq=qp), this is basically CRF in X264. */ namespace streamfx::encoder::ffmpeg::handler::nvenc { bool is_available(); void override_update(ffmpeg_instance* instance, obs_data_t* settings); void get_defaults(obs_data_t* settings, const AVCodec* codec, AVCodecContext* context); void get_properties_pre(obs_properties_t* props, const AVCodec* codec, const AVCodecContext* context); void get_properties_post(obs_properties_t* props, const AVCodec* codec, const AVCodecContext* context); void get_runtime_properties(obs_properties_t* props, const AVCodec* codec, AVCodecContext* context); void migrate(obs_data_t* settings, uint64_t version, const AVCodec* codec, AVCodecContext* context); void update(obs_data_t* settings, const AVCodec* codec, AVCodecContext* context); void log_options(obs_data_t* settings, const AVCodec* codec, AVCodecContext* context); } // namespace streamfx::encoder::ffmpeg::handler::nvenc