[vlc-devel] [PATCH 5/7] video_output: read the user crop values before creating the display
Steve Lhomme
robux4 at ycbcr.xyz
Tue Sep 1 12:06:36 CEST 2020
---
src/video_output/video_output.c | 28 ++++++++++++++++++++++++++++
src/video_output/vout_internal.h | 4 ++++
src/video_output/vout_intf.c | 2 +-
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 78e17cda742..383130a7287 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -2216,6 +2216,34 @@ int vout_Request(const vout_configuration_t *cfg, vlc_video_context *vctx, input
}
vlc_mutex_lock(&sys->window_lock);
+ char *psz_crop = var_InheritString(&vout->obj, "crop");
+ if (psz_crop) {
+ unsigned num, den;
+ unsigned y, x;
+ unsigned width, height;
+ enum vout_crop_mode mode;
+
+ if (GetCropMode(psz_crop, &mode, &num, &den,
+ &x, &y, &width, &height))
+ {
+ switch (mode)
+ {
+ case VOUT_CROP_RATIO:
+ ChangeCropRatio(sys, num, den);
+ break;
+ case VOUT_CROP_WINDOW:
+ ChangeCropWindow(sys, x, y, width, height);
+ break;
+ case VOUT_CROP_BORDER:
+ ChangeCropBorder(sys, x, y, width, height);
+ break;
+ case VOUT_CROP_NONE:
+ break;
+ }
+ }
+ free(psz_crop);
+ }
+
if (EnableWindowLocked(vout, &original) != 0)
{
/* the window was not enabled, nor the display started */
diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h
index ef6625c1eea..54eb4a7c0a0 100644
--- a/src/video_output/vout_internal.h
+++ b/src/video_output/vout_internal.h
@@ -104,6 +104,10 @@ int vout_ChangeSource( vout_thread_t *p_vout, const video_format_t *fmt );
enum vout_crop_mode {
VOUT_CROP_NONE, VOUT_CROP_RATIO, VOUT_CROP_WINDOW, VOUT_CROP_BORDER,
};
+bool GetCropMode(const char *crop_str, enum vout_crop_mode *mode,
+ unsigned *num, unsigned *den,
+ unsigned *x, unsigned *y,
+ unsigned *width, unsigned *height );
/* TODO to move them to vlc_vout.h */
void vout_ChangeFullscreen(vout_thread_t *, const char *id);
diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c
index 534f783a456..630961125b7 100644
--- a/src/video_output/vout_intf.c
+++ b/src/video_output/vout_intf.c
@@ -450,7 +450,7 @@ exit:
free( psz_path );
}
-static bool GetCropMode(const char *crop_str, enum vout_crop_mode *mode,
+bool GetCropMode(const char *crop_str, enum vout_crop_mode *mode,
unsigned *num, unsigned *den,
unsigned *x, unsigned *y,
unsigned *width, unsigned *height )
--
2.26.2
More information about the vlc-devel
mailing list