Commit 5bc69f38 authored by Anton Khirnov's avatar Anton Khirnov

error_resilience: do not require mbintra/skip tables

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