Browse Source

reverse incorrect stride < (width+7)&~7 fix

Originally committed as revision 1594 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 22 years ago
parent
commit
b2a3fcb7e1
1 changed files with 3 additions and 26 deletions
  1. +3
    -26
      libavcodec/libpostproc/postprocess.c

+ 3
- 26
libavcodec/libpostproc/postprocess.c View File

@@ -800,7 +800,6 @@ void pp_postprocess(uint8_t * src[3], int srcStride[3],
{ {
int mbWidth = (width+15)>>4; int mbWidth = (width+15)>>4;
int mbHeight= (height+15)>>4; int mbHeight= (height+15)>>4;
int horz_size,vert_size;
PPMode *mode = (PPMode*)vm; PPMode *mode = (PPMode*)vm;
PPContext *c = (PPContext*)vc; PPContext *c = (PPContext*)vc;
int minStride= MAX(srcStride[0], dstStride[0]); int minStride= MAX(srcStride[0], dstStride[0]);
@@ -848,40 +847,18 @@ for(y=0; y<mbHeight; y++){
printf("using npp filters 0x%X/0x%X\n", mode->lumMode, mode->chromMode); 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], postProcess(src[0], srcStride[0], dst[0], dstStride[0],
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, height, QP_store, QPStride, 0, mode, c);


width = (width )>>c->hChromaSubSample; width = (width )>>c->hChromaSubSample;
horz_size = (width / BLOCK_SIZE) * BLOCK_SIZE;
height = (height)>>c->vChromaSubSample; height = (height)>>c->vChromaSubSample;


if(mode->chromMode) if(mode->chromMode)
{ {
postProcess(src[1], srcStride[1], dst[1], dstStride[1], postProcess(src[1], srcStride[1], dst[1], dstStride[1],
horz_size, height, QP_store, QPStride, 1, mode, c);
width, height, QP_store, QPStride, 1, mode, c);
postProcess(src[2], srcStride[2], dst[2], dstStride[2], postProcess(src[2], srcStride[2], dst[2], dstStride[2],
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);
}
}
width, height, QP_store, QPStride, 2, mode, c);
} }
else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2]) else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2])
{ {


Loading…
Cancel
Save