Mercurial > mplayer.hg
comparison postproc/swscale.c @ 4806:a14eff26f66a
use assert.h
more assertions
author | michael |
---|---|
date | Fri, 22 Feb 2002 15:24:19 +0000 |
parents | 45f652f8b7c8 |
children | 4cfa6366e551 |
comparison
equal
deleted
inserted
replaced
4805:79b753e2e84a | 4806:a14eff26f66a |
---|---|
50 #include <string.h> | 50 #include <string.h> |
51 #include <math.h> | 51 #include <math.h> |
52 #include <stdio.h> | 52 #include <stdio.h> |
53 #include "../config.h" | 53 #include "../config.h" |
54 #include "../mangle.h" | 54 #include "../mangle.h" |
55 #include <assert.h> | |
55 #ifdef HAVE_MALLOC_H | 56 #ifdef HAVE_MALLOC_H |
56 #include <malloc.h> | 57 #include <malloc.h> |
57 #endif | 58 #endif |
58 #include "swscale.h" | 59 #include "swscale.h" |
59 #include "../cpudetect.h" | 60 #include "../cpudetect.h" |
74 #define FAST_BGR2YV12 // use 7 bit coeffs instead of 15bit | 75 #define FAST_BGR2YV12 // use 7 bit coeffs instead of 15bit |
75 | 76 |
76 #define RET 0xC3 //near return opcode for X86 | 77 #define RET 0xC3 //near return opcode for X86 |
77 | 78 |
78 #ifdef MP_DEBUG | 79 #ifdef MP_DEBUG |
79 #define ASSERT(x) if(!(x)) { printf("ASSERT " #x " failed\n"); *((int*)0)=0; } | 80 #define ASSERT(x) assert(x); |
80 #else | 81 #else |
81 #define ASSERT(x) ; | 82 #define ASSERT(x) ; |
82 #endif | 83 #endif |
83 | 84 |
84 #ifdef M_PI | 85 #ifdef M_PI |
804 } | 805 } |
805 } | 806 } |
806 else // downscale | 807 else // downscale |
807 { | 808 { |
808 int xDstInSrc; | 809 int xDstInSrc; |
810 ASSERT(dstW <= srcW) | |
811 | |
809 if(flags&SWS_BICUBIC) filterSize= (int)ceil(1 + 4.0*srcW / (double)dstW); | 812 if(flags&SWS_BICUBIC) filterSize= (int)ceil(1 + 4.0*srcW / (double)dstW); |
810 else if(flags&SWS_X) filterSize= (int)ceil(1 + 4.0*srcW / (double)dstW); | 813 else if(flags&SWS_X) filterSize= (int)ceil(1 + 4.0*srcW / (double)dstW); |
811 else if(flags&SWS_AREA) filterSize= (int)ceil(1 + 1.0*srcW / (double)dstW); | 814 else if(flags&SWS_AREA) filterSize= (int)ceil(1 + 1.0*srcW / (double)dstW); |
812 else /* BILINEAR */ filterSize= (int)ceil(1 + 2.0*srcW / (double)dstW); | 815 else /* BILINEAR */ filterSize= (int)ceil(1 + 2.0*srcW / (double)dstW); |
813 // printf("%d %d %d\n", *filterSize, srcW, dstW); | 816 // printf("%d %d %d\n", *filterSize, srcW, dstW); |
856 } | 859 } |
857 | 860 |
858 /* apply src & dst Filter to filter -> filter2 | 861 /* apply src & dst Filter to filter -> filter2 |
859 free(filter); | 862 free(filter); |
860 */ | 863 */ |
864 ASSERT(filterSize>0) | |
861 filter2Size= filterSize; | 865 filter2Size= filterSize; |
862 if(srcFilter) filter2Size+= srcFilter->length - 1; | 866 if(srcFilter) filter2Size+= srcFilter->length - 1; |
863 if(dstFilter) filter2Size+= dstFilter->length - 1; | 867 if(dstFilter) filter2Size+= dstFilter->length - 1; |
868 ASSERT(filter2Size>0) | |
864 filter2= (double*)memalign(8, filter2Size*dstW*sizeof(double)); | 869 filter2= (double*)memalign(8, filter2Size*dstW*sizeof(double)); |
865 | 870 |
866 for(i=0; i<dstW; i++) | 871 for(i=0; i<dstW; i++) |
867 { | 872 { |
868 int j; | 873 int j; |
927 } | 932 } |
928 | 933 |
929 if(min>minFilterSize) minFilterSize= min; | 934 if(min>minFilterSize) minFilterSize= min; |
930 } | 935 } |
931 | 936 |
937 ASSERT(minFilterSize > 0) | |
932 filterSize= (minFilterSize +(filterAlign-1)) & (~(filterAlign-1)); | 938 filterSize= (minFilterSize +(filterAlign-1)) & (~(filterAlign-1)); |
939 ASSERT(filterSize > 0) | |
933 filter= (double*)memalign(8, filterSize*dstW*sizeof(double)); | 940 filter= (double*)memalign(8, filterSize*dstW*sizeof(double)); |
934 *outFilterSize= filterSize; | 941 *outFilterSize= filterSize; |
935 | 942 |
936 if((flags&SWS_PRINT_INFO) && verbose) | 943 if((flags&SWS_PRINT_INFO) && verbose) |
937 printf("SwScaler: reducing / aligning filtersize %d -> %d\n", filter2Size, filterSize); | 944 printf("SwScaler: reducing / aligning filtersize %d -> %d\n", filter2Size, filterSize); |
946 else filter[i*filterSize + j]= filter2[i*filter2Size + j]; | 953 else filter[i*filterSize + j]= filter2[i*filter2Size + j]; |
947 } | 954 } |
948 } | 955 } |
949 free(filter2); filter2=NULL; | 956 free(filter2); filter2=NULL; |
950 | 957 |
951 ASSERT(filterSize > 0) | |
952 | 958 |
953 //FIXME try to align filterpos if possible | 959 //FIXME try to align filterpos if possible |
954 | 960 |
955 //fix borders | 961 //fix borders |
956 for(i=0; i<dstW; i++) | 962 for(i=0; i<dstW; i++) |