draw_edges does not extend edges when finishing the first field, thus
second fields depending on the first field edges being extended will
read uninitialized data.

Fixes THREADS=7 THREAD_TYPE=2 fate-h264-conformance-cvnlfi2_sony_h.
---
 libavcodec/h264.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 5fb303c..a4d0a29 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -2306,7 +2306,8 @@ static int decode_slice_header(H264Context *h, 
H264Context *h0){
                           +(h->ref_list[j][i].reference&3);
     }
 
-    h->emu_edge_width= (s->flags&CODEC_FLAG_EMU_EDGE) ? 0 : 16;
+    //FIXME: fix draw_edges+PAFF+threads to draw edges of first field 
independently
+    h->emu_edge_width= (s->flags&CODEC_FLAG_EMU_EDGE || 
(!h->sps.frame_mbs_only_flag && s->avctx->active_thread_type)) ? 0 : 16;
     h->emu_edge_height= (FRAME_MBAFF || FIELD_PICTURE) ? 0 : h->emu_edge_width;
 
     if(s->avctx->debug&FF_DEBUG_PICT_INFO){
-- 
1.7.2.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to