Mercurial > libavcodec.hg
changeset 11465:2e9cf41e2c2e libavcodec
Always reset slice_table.
Previously, the area of a lost slice would be left at the slice number of the previous
frame which could occasionally match the number of the next slice and thus a non existing
slice could have been used for prediction leading to additional decoding errors in otherwise
undamaged slices.
author | michael |
---|---|
date | Fri, 12 Mar 2010 15:21:45 +0000 |
parents | 1f170baf606f |
children | 049a0c71e5a3 |
files | h264.c |
diffstat | 1 files changed, 1 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/h264.c Fri Mar 12 12:26:47 2010 +0000 +++ b/h264.c Fri Mar 12 15:21:45 2010 +0000 @@ -961,8 +961,7 @@ if(!h->thread_context[i]->s.obmc_scratchpad) h->thread_context[i]->s.obmc_scratchpad = av_malloc(16*2*s->linesize + 8*2*s->uvlinesize); - /* some macroblocks will be accessed before they're available */ - if(FRAME_MBAFF || s->avctx->thread_count > 1) + /* some macroblocks can be accessed before they're available in case of lost slices, mbaff or threading*/ memset(h->slice_table, -1, (s->mb_height*s->mb_stride-1) * sizeof(*h->slice_table)); // s->decode= (s->flags&CODEC_FLAG_PSNR) || !s->encoding || s->current_picture.reference /*|| h->contains_intra*/ || 1;