diff mbox series

[FFmpeg-devel,1/5] avfilter/vf_signature: Allocate arrays together

Message ID AS8P250MB07447985D1C6D4DACFA426B28F4E2@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
State Accepted
Commit c149d86760aca52c9d289ff1aa835689875e842e
Headers show
Series [FFmpeg-devel,1/5] avfilter/vf_signature: Allocate arrays together | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Andreas Rheinhardt Feb. 14, 2024, 12:03 p.m. UTC
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavfilter/vf_signature.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

Comments

Marvin Scholz Feb. 14, 2024, 12:17 p.m. UTC | #1
On 14 Feb 2024, at 13:03, Andreas Rheinhardt wrote:

> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  libavfilter/vf_signature.c | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
> index 4896e8f2c1..eb48bf773d 100644
> --- a/libavfilter/vf_signature.c
> +++ b/libavfilter/vf_signature.c
> @@ -250,14 +250,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
>          int64_t* elemsignature;
>          uint64_t* sortsignature;
>
> -        elemsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
> +        elemsignature = av_malloc_array(elemcat->elem_count, 2 * sizeof(int64_t));
>          if (!elemsignature)
>              return AVERROR(ENOMEM);
> -        sortsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
> -        if (!sortsignature) {
> -            av_freep(&elemsignature);
> -            return AVERROR(ENOMEM);
> -        }
> +        sortsignature = elemsignature + elemcat->elem_count;

Just my 2cents as someone not maintaining this code, so feel free to ignore completely:

IMHO this makes it harder to understand what is going on, does it provide any meaningful
benefit?

At the very least I would suggest to add a comment for the sake of whoever looks a this
code next and tries to grasp what is happening there.

>
>          for (j = 0; j < elemcat->elem_count; j++) {
>              blocksum = 0;
> @@ -307,7 +303,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
>              f++;
>          }
>          av_freep(&elemsignature);
> -        av_freep(&sortsignature);
>      }
>
>      /* confidence */
> -- 
> 2.34.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Andreas Rheinhardt Feb. 14, 2024, 12:24 p.m. UTC | #2
epirat07@gmail.com:
> On 14 Feb 2024, at 13:03, Andreas Rheinhardt wrote:
> 
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>> ---
>>  libavfilter/vf_signature.c | 9 ++-------
>>  1 file changed, 2 insertions(+), 7 deletions(-)
>>
>> diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
>> index 4896e8f2c1..eb48bf773d 100644
>> --- a/libavfilter/vf_signature.c
>> +++ b/libavfilter/vf_signature.c
>> @@ -250,14 +250,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
>>          int64_t* elemsignature;
>>          uint64_t* sortsignature;
>>
>> -        elemsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
>> +        elemsignature = av_malloc_array(elemcat->elem_count, 2 * sizeof(int64_t));
>>          if (!elemsignature)
>>              return AVERROR(ENOMEM);
>> -        sortsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
>> -        if (!sortsignature) {
>> -            av_freep(&elemsignature);
>> -            return AVERROR(ENOMEM);
>> -        }
>> +        sortsignature = elemsignature + elemcat->elem_count;
> 
> Just my 2cents as someone not maintaining this code, so feel free to ignore completely:
> 
> IMHO this makes it harder to understand what is going on, does it provide any meaningful
> benefit?
> 
> At the very least I would suggest to add a comment for the sake of whoever looks a this
> code next and tries to grasp what is happening there.
> 

The benefit is to have less code; e.g. if the second allocation fails,
one needs to have special cleanup code for the first one.

- Andreas
Andreas Rheinhardt Feb. 18, 2024, 2:48 a.m. UTC | #3
Andreas Rheinhardt:
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  libavfilter/vf_signature.c | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
> index 4896e8f2c1..eb48bf773d 100644
> --- a/libavfilter/vf_signature.c
> +++ b/libavfilter/vf_signature.c
> @@ -250,14 +250,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
>          int64_t* elemsignature;
>          uint64_t* sortsignature;
>  
> -        elemsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
> +        elemsignature = av_malloc_array(elemcat->elem_count, 2 * sizeof(int64_t));
>          if (!elemsignature)
>              return AVERROR(ENOMEM);
> -        sortsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
> -        if (!sortsignature) {
> -            av_freep(&elemsignature);
> -            return AVERROR(ENOMEM);
> -        }
> +        sortsignature = elemsignature + elemcat->elem_count;
>  
>          for (j = 0; j < elemcat->elem_count; j++) {
>              blocksum = 0;
> @@ -307,7 +303,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
>              f++;
>          }
>          av_freep(&elemsignature);
> -        av_freep(&sortsignature);
>      }
>  
>      /* confidence */

Will apply this patchset tomorrow unless there are objections.

- Andreas
diff mbox series

Patch

diff --git a/libavfilter/vf_signature.c b/libavfilter/vf_signature.c
index 4896e8f2c1..eb48bf773d 100644
--- a/libavfilter/vf_signature.c
+++ b/libavfilter/vf_signature.c
@@ -250,14 +250,10 @@  static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
         int64_t* elemsignature;
         uint64_t* sortsignature;
 
-        elemsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
+        elemsignature = av_malloc_array(elemcat->elem_count, 2 * sizeof(int64_t));
         if (!elemsignature)
             return AVERROR(ENOMEM);
-        sortsignature = av_malloc_array(elemcat->elem_count, sizeof(int64_t));
-        if (!sortsignature) {
-            av_freep(&elemsignature);
-            return AVERROR(ENOMEM);
-        }
+        sortsignature = elemsignature + elemcat->elem_count;
 
         for (j = 0; j < elemcat->elem_count; j++) {
             blocksum = 0;
@@ -307,7 +303,6 @@  static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
             f++;
         }
         av_freep(&elemsignature);
-        av_freep(&sortsignature);
     }
 
     /* confidence */