mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-18 21:45:10 +00:00
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>
This commit is contained in:
parent
94968dbc11
commit
6e5acb6c88
@ -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;
|
||||
}
|
||||
|
||||
|
@ -52,7 +52,8 @@ typedef struct ERPicture {
|
||||
|
||||
typedef struct ERContext {
|
||||
AVCodecContext *avctx;
|
||||
MECmpContext mecc;
|
||||
|
||||
me_cmp_func sad;
|
||||
int mecc_inited;
|
||||
|
||||
int *mb_index2xy;
|
||||
|
Loading…
Reference in New Issue
Block a user