Added a selftest to libavutil/display.c
- Check if av_display_rotation_get() gets the correct degrees
    - Check if av_display_rotation_set() sets the correct matrix
    - Check if av_display_matrix_flip() changes correct the matrix
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
			
			
This commit is contained in:
		
							parent
							
								
									2aebdfb451
								
							
						
					
					
						commit
						124526ba1a
					
				@ -181,6 +181,7 @@ TESTPROGS = adler32                                                     \
 | 
			
		||||
            crc                                                         \
 | 
			
		||||
            des                                                         \
 | 
			
		||||
            dict                                                        \
 | 
			
		||||
            display                                                     \
 | 
			
		||||
            error                                                       \
 | 
			
		||||
            eval                                                        \
 | 
			
		||||
            file                                                        \
 | 
			
		||||
 | 
			
		||||
@ -71,3 +71,46 @@ void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip)
 | 
			
		||||
        for (i = 0; i < 9; i++)
 | 
			
		||||
            matrix[i] *= flip[i % 3];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef TEST
 | 
			
		||||
 | 
			
		||||
static void print_matrix(int32_t matrix[9])
 | 
			
		||||
{
 | 
			
		||||
    int i, j;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < 3; ++i) {
 | 
			
		||||
        for (j = 0; j < 3 - 1; ++j)
 | 
			
		||||
            printf("%d ", matrix[i*3 + j]);
 | 
			
		||||
 | 
			
		||||
        printf("%d\n", matrix[i*3 + j]);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
    int32_t matrix[9];
 | 
			
		||||
 | 
			
		||||
    // Set the matrix to 90 degrees
 | 
			
		||||
    av_display_rotation_set(matrix, 90);
 | 
			
		||||
    print_matrix(matrix);
 | 
			
		||||
    printf("degrees: %f\n", av_display_rotation_get(matrix));
 | 
			
		||||
 | 
			
		||||
    // Set the matrix to -45 degrees
 | 
			
		||||
    av_display_rotation_set(matrix, -45);
 | 
			
		||||
    print_matrix(matrix);
 | 
			
		||||
    printf("degrees: %f\n", av_display_rotation_get(matrix));
 | 
			
		||||
 | 
			
		||||
    // flip horizontal
 | 
			
		||||
    av_display_matrix_flip(matrix, 1, 0);
 | 
			
		||||
    print_matrix(matrix);
 | 
			
		||||
    printf("degrees: %f\n", av_display_rotation_get(matrix));
 | 
			
		||||
 | 
			
		||||
    // flip vertical
 | 
			
		||||
    av_display_matrix_flip(matrix, 0, 1);
 | 
			
		||||
    print_matrix(matrix);
 | 
			
		||||
    printf("degrees: %f\n", av_display_rotation_get(matrix));
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@
 | 
			
		||||
#define AVUTIL_DISPLAY_H
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The display transformation matrix specifies an affine transformation that
 | 
			
		||||
 | 
			
		||||
@ -99,6 +99,10 @@ FATE_LIBAVUTIL-$(CONFIG_PIXELUTILS) += fate-pixelutils
 | 
			
		||||
fate-pixelutils: libavutil/pixelutils-test$(EXESUF)
 | 
			
		||||
fate-pixelutils: CMD = run libavutil/pixelutils-test
 | 
			
		||||
 | 
			
		||||
FATE_LIBAVUTIL += fate-display
 | 
			
		||||
fate-display: libavutil/display-test$(EXESUF)
 | 
			
		||||
fate-display: CMD = run libavutil/display-test
 | 
			
		||||
 | 
			
		||||
FATE_LIBAVUTIL += fate-random_seed
 | 
			
		||||
fate-random_seed: libavutil/random_seed-test$(EXESUF)
 | 
			
		||||
fate-random_seed: CMD = run libavutil/random_seed-test
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								tests/ref/fate/display
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tests/ref/fate/display
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
0 65536 0
 | 
			
		||||
-65536 0 0
 | 
			
		||||
0 0 1073741824
 | 
			
		||||
degrees: -90.000000
 | 
			
		||||
46340 -46340 0
 | 
			
		||||
46340 46340 0
 | 
			
		||||
0 0 1073741824
 | 
			
		||||
degrees: 45.000000
 | 
			
		||||
-46340 -46340 0
 | 
			
		||||
-46340 46340 0
 | 
			
		||||
0 0 1073741824
 | 
			
		||||
degrees: 135.000000
 | 
			
		||||
-46340 46340 0
 | 
			
		||||
-46340 -46340 0
 | 
			
		||||
0 0 1073741824
 | 
			
		||||
degrees: -135.000000
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user