[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 13:08:05 CEST 2020
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.
>> 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
>
More information about the vlc-devel
mailing list