diff --git a/libpostproc/postprocess_template.c b/libpostproc/postprocess_template.c index 366b77490a..4016b08a37 100644 --- a/libpostproc/postprocess_template.c +++ b/libpostproc/postprocess_template.c @@ -3529,7 +3529,6 @@ static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[ for(x = startx; x < endx; x+=BLOCK_SIZE){ const int stride= dstStride; - av_unused uint8_t *tmpXchg; if(isColor){ QP= QPptr[x>>qpHShift]; @@ -3569,7 +3568,37 @@ static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[ } } + dstBlock+=8; + srcBlock+=8; + } + + dstBlock = dstBlockStart; + srcBlock = srcBlockStart; + + for(x = startx; x < endx; x+=BLOCK_SIZE){ + const int stride= dstStride; + av_unused uint8_t *tmpXchg; + + if(isColor){ + QP= QPptr[x>>qpHShift]; + c.nonBQP= nonBQPptr[x>>qpHShift]; + }else{ + QP= QPptr[x>>4]; + QP= (QP* QPCorrecture + 256*128)>>16; + c.nonBQP= nonBQPptr[x>>4]; + c.nonBQP= (c.nonBQP* QPCorrecture + 256*128)>>16; + } + c.QP= QP; #if TEMPLATE_PP_MMX + __asm__ volatile( + "movd %1, %%mm7 \n\t" + "packuswb %%mm7, %%mm7 \n\t" // 0, 0, 0, QP, 0, 0, 0, QP + "packuswb %%mm7, %%mm7 \n\t" // 0,QP, 0, QP, 0,QP, 0, QP + "packuswb %%mm7, %%mm7 \n\t" // QP,..., QP + "movq %%mm7, %0 \n\t" + : "=m" (c.pQPb) + : "r" (QP) + ); RENAME(transpose1)(tempBlock1, tempBlock2, dstBlock, dstStride); #endif /* check if we have a previous block to deblock it with dstBlock */