summaryrefslogtreecommitdiffstats
path: root/video/sws_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'video/sws_utils.h')
-rw-r--r--video/sws_utils.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/video/sws_utils.h b/video/sws_utils.h
index 22d16edefb..bef8e465ce 100644
--- a/video/sws_utils.h
+++ b/video/sws_utils.h
@@ -4,6 +4,8 @@
#include <stdbool.h>
#include <libswscale/swscale.h>
+#include "mp_image.h"
+
struct mp_image;
struct mp_csp_details;
@@ -26,6 +28,34 @@ void mp_image_swscale(struct mp_image *dst, struct mp_image *src,
void mp_image_sw_blur_scale(struct mp_image *dst, struct mp_image *src,
float gblur);
+struct mp_sws_context {
+ // User configuration. These can be changed freely, at any time.
+ // mp_sws_scale() will handle the changes transparently.
+ int flags;
+ int brightness, contrast, saturation;
+ bool force_reload;
+ // These are also implicitly set by mp_sws_scale(), and thus optional.
+ // Setting them before that call makes sense when using mp_sws_reinit().
+ struct mp_image_params src, dst;
+
+ // Changing these requires setting force_reload=true.
+ // By default, they are NULL.
+ // Freeing the mp_sws_context will deallocate these if set.
+ struct SwsFilter *src_filter, *dst_filter;
+
+ // Cached context (if any)
+ struct SwsContext *sws;
+
+ // Contains parameters for which sws is valid
+ struct mp_sws_context *cached;
+};
+
+struct mp_sws_context *mp_sws_alloc(void *talloc_parent);
+int mp_sws_reinit(struct mp_sws_context *ctx);
+void mp_sws_set_from_cmdline(struct mp_sws_context *ctx);
+int mp_sws_scale(struct mp_sws_context *ctx, struct mp_image *dst,
+ struct mp_image *src);
+
#endif /* MP_SWS_UTILS_H */
// vim: ts=4 sw=4 et tw=80