mirror of https://git.ffmpeg.org/ffmpeg.git
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. Patch by Andreas Öman: [andreas olebyn nu] Originally committed as revision 10431 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
7a297ceb8f
commit
ec970c2187
|
@ -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");
|
||||
|
@ -3823,6 +3828,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
|
||||
||(s->avctx->skip_loop_filter >= AVDISCARD_NONKEY && h->slice_type != I_TYPE)
|
||||
|
|
Loading…
Reference in New Issue