summaryrefslogtreecommitdiff
path: root/libavcodec/error_resilience.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-03-25 18:39:16 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-19 19:16:23 +0200
commit6e5acb6c88e00335a60b235a45d49e03424046ac (patch)
treee783d819b927d9225a8416757341af09b17f5d7d /libavcodec/error_resilience.c
parent94968dbc1116e23cb658c09538e9bce52b63d654 (diff)
downloadffmpeg-6e5acb6c88e00335a60b235a45d49e03424046ac.tar.gz
avcodec/error_resilience: Only keep what is needed from MECmpContext
ERContext currently has an embedded MECmpContext, despite only needing exactly one function from it. This is wasteful because MECmpContext is pretty large (135 pointers, 1080 B for eight byte pointers). So keep only what is needed. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/error_resilience.c')
-rw-r--r--libavcodec/error_resilience.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
index e9764f8d96..f957c68d2c 100644
--- a/libavcodec/error_resilience.c
+++ b/libavcodec/error_resilience.c
@@ -766,12 +766,12 @@ static int is_intra_more_likely(ERContext *s)
} else {
ff_thread_await_progress(s->last_pic.tf, mb_y, 0);
}
- is_intra_likely += s->mecc.sad[0](NULL, last_mb_ptr, mb_ptr,
- linesize[0], 16);
+ is_intra_likely += s->sad(NULL, last_mb_ptr, mb_ptr,
+ linesize[0], 16);
// FIXME need await_progress() here
- is_intra_likely -= s->mecc.sad[0](NULL, last_mb_ptr,
- last_mb_ptr + linesize[0] * 16,
- linesize[0], 16);
+ is_intra_likely -= s->sad(NULL, last_mb_ptr,
+ last_mb_ptr + linesize[0] * 16,
+ linesize[0], 16);
} else {
if (IS_INTRA(s->cur_pic.mb_type[mb_xy]))
is_intra_likely++;
@@ -790,7 +790,9 @@ void ff_er_frame_start(ERContext *s)
return;
if (!s->mecc_inited) {
- ff_me_cmp_init(&s->mecc, s->avctx);
+ MECmpContext mecc;
+ ff_me_cmp_init(&mecc, s->avctx);
+ s->sad = mecc.sad[0];
s->mecc_inited = 1;
}