URL: https://github.com/edrosten/fast-C-src
Version: 391d5e939eb1545d24c10533d7de424db8d9c191
License: BSD
License File: LICENSE

Description:
Library to compute FAST features with non-maximum suppression.

The files are valid C and C++ code, and have no special requirements for
compiling, and they do not depend on any libraries. Just compile them along with
the rest of your project.

To use the functions, #include "fast.h"

The corner detectors have the following prototype (where X is 9, 10, 11 or 12):

xy* fastX_detect_nonmax(const unsigned char * data, int xsize, int ysize, int stride, int threshold, int* numcorners)

Where xy is the following simple struct typedef:

typedef struct
{
	int x, y;
} xy;

The image is passed in as a block of data and dimensions, and the list of
corners is returned as an array of xy structs, and an integer (numcorners)
with the number of corners returned.  The data can be deallocated with free().
Nonmaximal suppression is performed on the corners. Note that the stride
is the number of bytes between rows. If your image has no padding, then this
is the same as xsize.

The detection, scoring and nonmaximal suppression are available as individual
functions.  To see how to use the individual functions, see fast.c

Local Modifications:
Add lines to turn off clang formatting for these files
Remove Fast 10, 11 and 12
Convert tabs to spaces
Prefix global functions with "aom_"; others made static
Add error checking
Add output argument to hold the scores of the detected features
Add assertion and rewrite comparisons to appease the scan-build static analyzer
Set output argument *ret_num_corners to -1 to signal memory allocation failure
