[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