From ec970c2187453ddcc5b5440dc11d12f975a489e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Fri, 7 Sep 2007 18:27:13 +0000 Subject: [PATCH] Let H.264 decoder skip deblocking across slices if running with multiple threads and CODEC_FLAGS2_FAST is set. Thus, it may decode the slices in parallel to gain speed. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch by Andreas Ă–man: [andreas olebyn nu] Originally committed as revision 10431 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h264.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 49eaa378c1..c2d5d990ca 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -3815,6 +3815,11 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ } if(h->deblocking_filter == 1 && h0->max_contexts > 1) { + if(s->avctx->flags2 & CODEC_FLAG2_FAST) { + /* Cheat slightly for speed: + Dont bother to deblock across slices */ + h->deblocking_filter = 2; + } else { h0->max_contexts = 1; if(!h0->single_decode_warning) { av_log(s->avctx, AV_LOG_INFO, "Cannot parallelize deblocking type 1, decoding such frames in sequential order\n"); @@ -3822,6 +3827,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ } if(h != h0) return 1; // deblocking switched inside frame + } } if( s->avctx->skip_loop_filter >= AVDISCARD_ALL