Mercurial > libavcodec.hg
changeset 1075:7f5587a7dd10 libavcodec
sync with mplayerxp. Fixes some 405.avi related flaws
author | nickols_k |
---|---|
date | Thu, 20 Feb 2003 16:14:12 +0000 |
parents | d90c350454da |
children | 65908e4b81f8 |
files | libpostproc/postprocess.c |
diffstat | 1 files changed, 26 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libpostproc/postprocess.c Tue Feb 18 19:10:57 2003 +0000 +++ b/libpostproc/postprocess.c Thu Feb 20 16:14:12 2003 +0000 @@ -800,6 +800,7 @@ { int mbWidth = (width+15)>>4; int mbHeight= (height+15)>>4; + int horz_size,vert_size; PPMode *mode = (PPMode*)vm; PPContext *c = (PPContext*)vc; int minStride= MAX(srcStride[0], dstStride[0]); @@ -847,18 +848,40 @@ printf("using npp filters 0x%X/0x%X\n", mode->lumMode, mode->chromMode); } + /* special case for 405.avi: (width=356)%8 !=0 */ + horz_size = (width / BLOCK_SIZE) * BLOCK_SIZE; + postProcess(src[0], srcStride[0], dst[0], dstStride[0], - width, height, QP_store, QPStride, 0, mode, c); + horz_size, height, QP_store, QPStride, 0, mode, c); + + if(horz_size < width) + { + unsigned y,tail; + tail = width-horz_size; + for(y=0; y<height; y++) + memcpy(&(dst[0][y*dstStride[0]+horz_size]), &(src[0][y*srcStride[0]+horz_size]), tail); + } width = (width )>>c->hChromaSubSample; + horz_size = (width / BLOCK_SIZE) * BLOCK_SIZE; height = (height)>>c->vChromaSubSample; if(mode->chromMode) { postProcess(src[1], srcStride[1], dst[1], dstStride[1], - width, height, QP_store, QPStride, 1, mode, c); + horz_size, height, QP_store, QPStride, 1, mode, c); postProcess(src[2], srcStride[2], dst[2], dstStride[2], - width, height, QP_store, QPStride, 2, mode, c); + horz_size, height, QP_store, QPStride, 2, mode, c); + if(horz_size < width) + { + unsigned y,tail; + tail = width-horz_size; + for(y=0; y<height; y++) + { + memcpy(&(dst[1][y*dstStride[1]+horz_size]), &(src[1][y*srcStride[1]+horz_size]), tail); + memcpy(&(dst[2][y*dstStride[2]+horz_size]), &(src[2][y*srcStride[2]+horz_size]), tail); + } + } } else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2]) {