[vlc-devel] [PATCH 5/7] video_output: read the user crop values before creating the display
Thomas Guillem
thomas at gllm.fr
Tue Sep 1 13:23:27 CEST 2020
On Tue, Sep 1, 2020, at 13:08, Steve Lhomme wrote:
> On 2020-09-01 12:44, Thomas Guillem wrote:
> >
> >
> > On Tue, Sep 1, 2020, at 12:06, Steve Lhomme wrote:
> >> ---
> >> 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);
> >> + }
> >> +
> >
> > Is it possible to put this initialisation into VoutGetDisplayCfg() like it is already done for other properties?
>
> I don't have a strong feeling about the location. And yes it could be
> there. But the VoutGetDisplayCfg() (which is really an InitDisplayCfg)
> is mostly about filling the vout_display_cfg_t. Here we initialize the
> vout_thread_sys_t.source structure.
OK, in that case, is it possible to put these 2 initialization in a new static function ? On order to ligthen vout_Request().
>
> >> 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
> >>
> >> _______________________________________________
> >> vlc-devel mailing list
> >> To unsubscribe or modify your subscription options:
> >> https://mailman.videolan.org/listinfo/vlc-devel
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
> >
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list