Mercurial > libavcodec.hg
comparison libpostproc/postprocess.c @ 1076:65908e4b81f8 libavcodec
reverse incorrect stride < (width+7)&~7 fix
author | michaelni |
---|---|
date | Thu, 20 Feb 2003 17:30:51 +0000 |
parents | 7f5587a7dd10 |
children | 3644e555a20a |
comparison
equal
deleted
inserted
replaced
1075:7f5587a7dd10 | 1076:65908e4b81f8 |
---|---|
798 QP_STORE_T *QP_store, int QPStride, | 798 QP_STORE_T *QP_store, int QPStride, |
799 pp_mode_t *vm, void *vc, int pict_type) | 799 pp_mode_t *vm, void *vc, int pict_type) |
800 { | 800 { |
801 int mbWidth = (width+15)>>4; | 801 int mbWidth = (width+15)>>4; |
802 int mbHeight= (height+15)>>4; | 802 int mbHeight= (height+15)>>4; |
803 int horz_size,vert_size; | |
804 PPMode *mode = (PPMode*)vm; | 803 PPMode *mode = (PPMode*)vm; |
805 PPContext *c = (PPContext*)vc; | 804 PPContext *c = (PPContext*)vc; |
806 int minStride= MAX(srcStride[0], dstStride[0]); | 805 int minStride= MAX(srcStride[0], dstStride[0]); |
807 | 806 |
808 if(c->stride < minStride) | 807 if(c->stride < minStride) |
846 if(verbose>2) | 845 if(verbose>2) |
847 { | 846 { |
848 printf("using npp filters 0x%X/0x%X\n", mode->lumMode, mode->chromMode); | 847 printf("using npp filters 0x%X/0x%X\n", mode->lumMode, mode->chromMode); |
849 } | 848 } |
850 | 849 |
851 /* special case for 405.avi: (width=356)%8 !=0 */ | |
852 horz_size = (width / BLOCK_SIZE) * BLOCK_SIZE; | |
853 | |
854 postProcess(src[0], srcStride[0], dst[0], dstStride[0], | 850 postProcess(src[0], srcStride[0], dst[0], dstStride[0], |
855 horz_size, height, QP_store, QPStride, 0, mode, c); | 851 width, height, QP_store, QPStride, 0, mode, c); |
856 | |
857 if(horz_size < width) | |
858 { | |
859 unsigned y,tail; | |
860 tail = width-horz_size; | |
861 for(y=0; y<height; y++) | |
862 memcpy(&(dst[0][y*dstStride[0]+horz_size]), &(src[0][y*srcStride[0]+horz_size]), tail); | |
863 } | |
864 | 852 |
865 width = (width )>>c->hChromaSubSample; | 853 width = (width )>>c->hChromaSubSample; |
866 horz_size = (width / BLOCK_SIZE) * BLOCK_SIZE; | |
867 height = (height)>>c->vChromaSubSample; | 854 height = (height)>>c->vChromaSubSample; |
868 | 855 |
869 if(mode->chromMode) | 856 if(mode->chromMode) |
870 { | 857 { |
871 postProcess(src[1], srcStride[1], dst[1], dstStride[1], | 858 postProcess(src[1], srcStride[1], dst[1], dstStride[1], |
872 horz_size, height, QP_store, QPStride, 1, mode, c); | 859 width, height, QP_store, QPStride, 1, mode, c); |
873 postProcess(src[2], srcStride[2], dst[2], dstStride[2], | 860 postProcess(src[2], srcStride[2], dst[2], dstStride[2], |
874 horz_size, height, QP_store, QPStride, 2, mode, c); | 861 width, height, QP_store, QPStride, 2, mode, c); |
875 if(horz_size < width) | |
876 { | |
877 unsigned y,tail; | |
878 tail = width-horz_size; | |
879 for(y=0; y<height; y++) | |
880 { | |
881 memcpy(&(dst[1][y*dstStride[1]+horz_size]), &(src[1][y*srcStride[1]+horz_size]), tail); | |
882 memcpy(&(dst[2][y*dstStride[2]+horz_size]), &(src[2][y*srcStride[2]+horz_size]), tail); | |
883 } | |
884 } | |
885 } | 862 } |
886 else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2]) | 863 else if(srcStride[1] == dstStride[1] && srcStride[2] == dstStride[2]) |
887 { | 864 { |
888 memcpy(dst[1], src[1], srcStride[1]*height); | 865 memcpy(dst[1], src[1], srcStride[1]*height); |
889 memcpy(dst[2], src[2], srcStride[2]*height); | 866 memcpy(dst[2], src[2], srcStride[2]*height); |