mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-23 19:30:05 +00:00
error_resilience: do not require mbintra/skip tables
h264dec does not use them at all and only allocates them for ER.
This commit is contained in:
parent
c377e04d8a
commit
5bc69f38c1
@ -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,10 +1205,11 @@ 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;
|
||||
}
|
||||
if (s->mbintra_table)
|
||||
s->mbintra_table[mb_xy] = 1;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user