You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avcodec/avfft: Add simple self test
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -862,6 +862,7 @@ SKIPHEADERS-$(CONFIG_VDPAU)            += vdpau.h vdpau_internal.h | ||||
|  | ||||
| TESTPROGS = imgconvert                                                  \ | ||||
|             options                                                     \ | ||||
|             avfft                                                       \ | ||||
|  | ||||
|  | ||||
| TESTPROGS-$(CONFIG_CABAC)                 += cabac | ||||
|   | ||||
| @@ -142,4 +142,38 @@ av_cold void av_dct_end(DCTContext *s) | ||||
|     } | ||||
| } | ||||
|  | ||||
| #ifdef TEST | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
|     int i; | ||||
| #define LEN 1024 | ||||
|     FFTSample *ref  = av_malloc_array(LEN, sizeof(*ref)); | ||||
|     FFTSample *data = av_malloc_array(LEN, sizeof(*data)); | ||||
|     RDFTContext *rdft_context  = av_rdft_init(10, DFT_R2C); | ||||
|     RDFTContext *irdft_context = av_rdft_init(10, IDFT_C2R); | ||||
|  | ||||
|     if (!ref || !data || !rdft_context || !irdft_context) | ||||
|         return 2; | ||||
|     for (i=0; i<LEN; i++) { | ||||
|         ref[i] = data[i] = i*456 + 123 + i*i; | ||||
|     } | ||||
|     av_rdft_calc(rdft_context, data); | ||||
|     av_rdft_calc(irdft_context, data); | ||||
|  | ||||
|     for (i=0; i<LEN; i++) { | ||||
|         if (fabs(ref[i] - data[i]/LEN*2) > 1) { | ||||
|             fprintf(stderr, "Failed at %d (%f %f)\n", i, ref[i], data[i]/LEN*2); | ||||
|             return 1; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     av_rdft_end(rdft_context); | ||||
|     av_rdft_end(irdft_context); | ||||
|     av_free(data); | ||||
|     av_free(ref); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* CONFIG_DCT */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user