summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2024-02-14 01:04:47 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2024-02-18 16:38:09 +0100
commitcc36a9f5b93557aeb391568641998b18961621e0 (patch)
treea4e53e2780d76a401cefcf106d33377e35b50fbe
parent626a076249c20477c4170e86bb255849404dbf6b (diff)
avfilter/signature_lookup: Avoid branch when adding to linked list
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavfilter/signature_lookup.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/libavfilter/signature_lookup.c b/libavfilter/signature_lookup.c
index ff0d23c5c7..9c69c02fbf 100644
--- a/libavfilter/signature_lookup.c
+++ b/libavfilter/signature_lookup.c
@@ -187,7 +187,7 @@ static MatchingInfo* get_matching_parameters(AVFilterContext *ctx, SignatureCont
size_t i, j, k, l, hmax = 0, score;
int framerate, offset, l1dist;
double m;
- MatchingInfo *cands = NULL, *c = NULL;
+ MatchingInfo cands = { 0 }, *c = &cands;
struct {
uint8_t size;
@@ -295,16 +295,10 @@ static MatchingInfo* get_matching_parameters(AVFilterContext *ctx, SignatureCont
for (i = 0; i < MAX_FRAMERATE; i++) {
for (j = 0; j < HOUGH_MAX_OFFSET; j++) {
if (hmax < hspace[i][j].score) {
- if (c == NULL) {
- c = av_malloc(sizeof(MatchingInfo));
- cands = c;
- } else {
- c->next = av_malloc(sizeof(MatchingInfo));
- c = c->next;
-
- }
+ c->next = av_malloc(sizeof(MatchingInfo));
+ c = c->next;
if (!c) {
- sll_free(&cands);
+ sll_free(&cands.next);
goto error;
}
c->framerateratio = (i+1.0) / 30;
@@ -325,7 +319,7 @@ static MatchingInfo* get_matching_parameters(AVFilterContext *ctx, SignatureCont
error:
av_freep(&hspace);
av_free(hspaces);
- return cands;
+ return cands.next;
}
static int iterate_frame(double frr, FineSignature **a, FineSignature **b, int fcount, int *bcount, int dir)