]> git.sesse.net Git - ffmpeg/commitdiff
Always reset slice_table.
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 12 Mar 2010 15:21:45 +0000 (15:21 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 12 Mar 2010 15:21:45 +0000 (15:21 +0000)
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.

Originally committed as revision 22483 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h264.c

index 21ad65c901bb25d86409bb6d0a1f2dc85a1e7ca3..6d7395cd28eaed2351254e2f3bb649df25f58f4e 100644 (file)
@@ -961,8 +961,7 @@ int ff_h264_frame_start(H264Context *h){
         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;