Skip to content
Snippets Groups Projects
Commit 5bc69f38 authored by Anton Khirnov's avatar Anton Khirnov
Browse files

error_resilience: do not require mbintra/skip tables

h264dec does not use them at all and only allocates them for ER.
parent c377e04d
No related branches found
No related tags found
No related merge requests found
......@@ -934,7 +934,7 @@ void ff_er_frame_end(ERContext *s)
const int mb_xy = s->mb_index2xy[i];
int error = s->error_status_table[mb_xy];
if (!s->mbskip_table[mb_xy]) // FIXME partition specific
if (s->mbskip_table && !s->mbskip_table[mb_xy]) // FIXME partition specific
distance++;
if (error & (1 << error_type))
distance = 0;
......@@ -1205,11 +1205,12 @@ ec_clean:
const int mb_xy = s->mb_index2xy[i];
int error = s->error_status_table[mb_xy];
if (s->cur_pic.f->pict_type != AV_PICTURE_TYPE_B &&
if (s->mbskip_table && s->cur_pic.f->pict_type != AV_PICTURE_TYPE_B &&
(error & (ER_DC_ERROR | ER_MV_ERROR | ER_AC_ERROR))) {
s->mbskip_table[mb_xy] = 0;
}
s->mbintra_table[mb_xy] = 1;
if (s->mbintra_table)
s->mbintra_table[mb_xy] = 1;
}
memset(&s->cur_pic, 0, sizeof(ERPicture));
......
......@@ -383,8 +383,6 @@ void ff_h264_free_tables(H264Context *h, int free_rbsp)
av_freep(&hx->er.mb_index2xy);
av_freep(&hx->er.error_status_table);
av_freep(&hx->er.er_temp_buffer);
av_freep(&hx->er.mbintra_table);
av_freep(&hx->er.mbskip_table);
if (free_rbsp) {
av_freep(&hx->rbsp_buffer);
......@@ -524,11 +522,6 @@ int ff_h264_context_init(H264Context *h)
FF_ALLOCZ_OR_GOTO(h->avctx, er->error_status_table,
mb_array_size * sizeof(uint8_t), fail);
FF_ALLOC_OR_GOTO(h->avctx, er->mbintra_table, mb_array_size, fail);
memset(er->mbintra_table, 1, mb_array_size);
FF_ALLOCZ_OR_GOTO(h->avctx, er->mbskip_table, mb_array_size + 2, fail);
FF_ALLOC_OR_GOTO(h->avctx, er->er_temp_buffer,
h->mb_height * h->mb_stride, fail);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment