From de363d3e0968fd623775977b3c15767e0b86f861 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Tue, 18 Feb 2020 20:58:58 -0800 Subject: [PATCH] libobs: Add obs_encoder_scaling_enabled() Returns whether rescaling is enabled for an encoder. This will be used with texture-based encoders to determine whether to fall back to RAM-based encoding instead. --- docs/sphinx/reference-encoders.rst | 7 +++++++ libobs/obs-encoder.c | 8 ++++++++ libobs/obs.h | 3 +++ 3 files changed, 18 insertions(+) diff --git a/docs/sphinx/reference-encoders.rst b/docs/sphinx/reference-encoders.rst index a9b47282ca6bba..953323bc3a3687 100644 --- a/docs/sphinx/reference-encoders.rst +++ b/docs/sphinx/reference-encoders.rst @@ -380,6 +380,13 @@ General Encoder Functions --------------------- +.. function:: bool obs_encoder_scaling_enabled(const obs_encoder_t *encoder) + + :return: *true* if pre-encode (CPU) scaling enabled, *false* + otherwise. + +--------------------- + .. function:: uint32_t obs_encoder_get_width(const obs_encoder_t *encoder) uint32_t obs_encoder_get_height(const obs_encoder_t *encoder) diff --git a/libobs/obs-encoder.c b/libobs/obs-encoder.c index dc7a75af5282e2..942d0d490a36bc 100644 --- a/libobs/obs-encoder.c +++ b/libobs/obs-encoder.c @@ -694,6 +694,14 @@ void obs_encoder_set_scaled_size(obs_encoder_t *encoder, uint32_t width, encoder->scaled_height = height; } +bool obs_encoder_scaling_enabled(const obs_encoder_t *encoder) +{ + if (!obs_encoder_valid(encoder, "obs_encoder_scaling_enabled")) + return false; + + return encoder->scaled_width || encoder->scaled_height; +} + uint32_t obs_encoder_get_width(const obs_encoder_t *encoder) { if (!obs_encoder_valid(encoder, "obs_encoder_get_width")) diff --git a/libobs/obs.h b/libobs/obs.h index bb42da68154bca..800171fa200e7b 100644 --- a/libobs/obs.h +++ b/libobs/obs.h @@ -1983,6 +1983,9 @@ EXPORT enum obs_encoder_type obs_encoder_get_type(const obs_encoder_t *encoder); EXPORT void obs_encoder_set_scaled_size(obs_encoder_t *encoder, uint32_t width, uint32_t height); +/** For video encoders, returns true if pre-encode scaling is enabled */ +EXPORT bool obs_encoder_scaling_enabled(const obs_encoder_t *encoder); + /** For video encoders, returns the width of the encoded image */ EXPORT uint32_t obs_encoder_get_width(const obs_encoder_t *encoder);