summaryrefslogtreecommitdiff
path: root/libavcodec/error_resilience.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2015-01-17 17:16:20 +0100
committerAnton Khirnov <anton@khirnov.net>2015-01-27 09:07:59 +0100
commitcf1e0786ed64e69614760bfb4ecd7adbde8e6094 (patch)
tree3f9950cdc5d877b7d21ed8de8508b75e294d7bf3 /libavcodec/error_resilience.c
parenta7e0380497306d9723dec8440a4c52e8bf0263cf (diff)
error_resilience: move the MECmpContext initialization into ER code
Currently, it needs to be initialized by the ER caller (which is currently either a mpegvideo decoder or h264dec). However, since none of those decoders use MECmpContext for anything except ER, it makes more sense to handle it purely inside ER.
Diffstat (limited to 'libavcodec/error_resilience.c')
-rw-r--r--libavcodec/error_resilience.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
index b1ca2d9919..0120109448 100644
--- a/libavcodec/error_resilience.c
+++ b/libavcodec/error_resilience.c
@@ -30,6 +30,7 @@
#include "libavutil/internal.h"
#include "avcodec.h"
#include "error_resilience.h"
+#include "me_cmp.h"
#include "mpegutils.h"
#include "mpegvideo.h"
#include "rectangle.h"
@@ -713,11 +714,11 @@ FF_ENABLE_DEPRECATION_WARNINGS
} 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->mecc->sad[0](NULL, last_mb_ptr,
- last_mb_ptr + linesize[0] * 16,
- linesize[0], 16);
+ is_intra_likely += s->mecc.sad[0](NULL, last_mb_ptr, mb_ptr,
+ linesize[0], 16);
+ is_intra_likely -= s->mecc.sad[0](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++;
@@ -734,6 +735,11 @@ void ff_er_frame_start(ERContext *s)
if (!s->avctx->error_concealment)
return;
+ if (!s->mecc_inited) {
+ ff_me_cmp_init(&s->mecc, s->avctx);
+ s->mecc_inited = 1;
+ }
+
memset(s->error_status_table, ER_MB_ERROR | VP_START | ER_MB_END,
s->mb_stride * s->mb_height * sizeof(uint8_t));
s->error_count = 3 * s->mb_num;