[vlc-devel] [PATCH 3/7] video_output: split the code to set the crop/AR value from the display update

Steve Lhomme robux4 at ycbcr.xyz
Tue Sep 1 15:13:23 CEST 2020


On 2020-09-01 14:59, Thomas Guillem wrote:
> 
> 
> On Tue, Sep 1, 2020, at 12:06, Steve Lhomme wrote:
>> ---
>>   src/video_output/video_output.c | 61 +++++++++++++++++++++++----------
>>   1 file changed, 42 insertions(+), 19 deletions(-)
>>
>> diff --git a/src/video_output/video_output.c
>> b/src/video_output/video_output.c
>> index 5149059d2b4..78e17cda742 100644
>> --- a/src/video_output/video_output.c
>> +++ b/src/video_output/video_output.c
>> @@ -628,6 +628,13 @@ void vout_ChangeZoom(vout_thread_t *vout, unsigned
>> num, unsigned den)
>>       vlc_mutex_unlock(&sys->display_lock);
>>   }
>>   
>> +static void ChangeDisplayAspectRatio(vout_thread_sys_t *sys,
>> +                                     unsigned dar_num, unsigned dar_den)
>> +{
>> +    sys->source.dar.num = dar_num;
>> +    sys->source.dar.den = dar_den;
>> +}
>> +
>>   void vout_ChangeDisplayAspectRatio(vout_thread_t *vout,
>>                                      unsigned dar_num, unsigned dar_den)
>>   {
>> @@ -635,8 +642,7 @@ void vout_ChangeDisplayAspectRatio(vout_thread_t *vout,
>>       assert(!sys->dummy);
>>   
>>       vlc_mutex_lock(&sys->window_lock);
>> -    sys->source.dar.num = dar_num;
>> -    sys->source.dar.den = dar_den;
>> +    ChangeDisplayAspectRatio(sys, dar_num, dar_den);
>>   
>>       vout_UpdateWindowSizeLocked(sys);
>>   
>> @@ -648,18 +654,23 @@ void vout_ChangeDisplayAspectRatio(vout_thread_t *vout,
>>       vlc_mutex_unlock(&sys->display_lock);
>>   }
>>   
>> -void vout_ChangeCropRatio(vout_thread_t *vout, unsigned num, unsigned den)
>> +static void ChangeCropRatio(vout_thread_sys_t *sys, unsigned num, unsigned den)
>>   {
>> -    vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>> -    assert(!sys->dummy);
>> -
>> -    vlc_mutex_lock(&sys->window_lock);
>>       if (num != 0 && den != 0) {
>>           sys->source.crop.mode = VOUT_CROP_RATIO;
>>           sys->source.crop.ratio.num = num;
>>           sys->source.crop.ratio.den = den;
>>       } else
>>           sys->source.crop.mode = VOUT_CROP_NONE;
>> +}
>> +
>> +void vout_ChangeCropRatio(vout_thread_t *vout, unsigned num, unsigned den)
>> +{
>> +    vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>> +    assert(!sys->dummy);
>> +
>> +    vlc_mutex_lock(&sys->window_lock);
>> +    ChangeCropRatio(sys, num, den);
>>   
>>       vout_UpdateWindowSizeLocked(sys);
>>   
>> @@ -671,12 +682,9 @@ void vout_ChangeCropRatio(vout_thread_t *vout,
>> unsigned num, unsigned den)
>>       vlc_mutex_unlock(&sys->display_lock);
>>   }
>>   
>> -void vout_ChangeCropWindow(vout_thread_t *vout,
>> -                           int x, int y, int width, int height)
>> +static void ChangeCropWindow(vout_thread_sys_t *sys,
>> +                             int x, int y, int width, int height)
> 
> We already disagreed on such changes. Please keep using vout.

There is already vout_ChangeCropWindow, that's where this code comes from.

>>   {
>> -    vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>> -    assert(!sys->dummy);
>> -
>>       if (x < 0)
>>           x = 0;
>>       if (y < 0)
>> @@ -686,12 +694,21 @@ void vout_ChangeCropWindow(vout_thread_t *vout,
>>       if (height < 0)
>>           height = 0;
>>   
>> -    vlc_mutex_lock(&sys->window_lock);
>>       sys->source.crop.mode = VOUT_CROP_WINDOW;
>>       sys->source.crop.window.x = x;
>>       sys->source.crop.window.y = y;
>>       sys->source.crop.window.width = width;
>>       sys->source.crop.window.height = height;
>> +}
>> +
>> +void vout_ChangeCropWindow(vout_thread_t *vout,
>> +                           int x, int y, int width, int height)
>> +{

This API is kept.

>> +    vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>> +    assert(!sys->dummy);
>> +
>> +    vlc_mutex_lock(&sys->window_lock);
>> +    ChangeCropWindow(sys, x, y, width, height);
>>   
>>       vout_UpdateWindowSizeLocked(sys);
>>   
>> @@ -703,12 +720,9 @@ void vout_ChangeCropWindow(vout_thread_t *vout,
>>       vlc_mutex_unlock(&sys->display_lock);
>>   }
>>   
>> -void vout_ChangeCropBorder(vout_thread_t *vout,
>> -                           int left, int top, int right, int bottom)
>> +static void ChangeCropBorder(vout_thread_sys_t *sys,
>> +                             int left, int top, int right, int bottom)
>>   {
>> -    vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>> -    assert(!sys->dummy);
>> -
>>       if (left < 0)
>>           left = 0;
>>       if (top < 0)
>> @@ -718,12 +732,21 @@ void vout_ChangeCropBorder(vout_thread_t *vout,
>>       if (bottom < 0)
>>           bottom = 0;
>>   
>> -    vlc_mutex_lock(&sys->window_lock);
>>       sys->source.crop.mode = VOUT_CROP_BORDER;
>>       sys->source.crop.border.left = left;
>>       sys->source.crop.border.right = right;
>>       sys->source.crop.border.top = top;
>>       sys->source.crop.border.bottom = bottom;
>> +}
>> +
>> +void vout_ChangeCropBorder(vout_thread_t *vout,
>> +                           int left, int top, int right, int bottom)
>> +{
>> +    vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>> +    assert(!sys->dummy);
>> +
>> +    vlc_mutex_lock(&sys->window_lock);
>> +    ChangeCropBorder(sys, left, top, right, bottom);
>>   
>>       vout_UpdateWindowSizeLocked(sys);
>>   
>> -- 
>> 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