28 #define MAX_FORMATS 1000 //this must be larger than the number of formats 35 #define AV_READ_TIME(x) 0 42 void *fmt_opaque =
NULL;
57 "Failure of %s probing code with score=%d type=%d p=%X size=%d\n",
58 fmt->
name, score, type, p, size);
70 void *fmt_opaque =
NULL;
76 fprintf(stderr,
"%12"PRIu64
" cycles, %12s\n",
88 ret = strtol(arg, &arg, 0);
94 int main(
int argc,
char **argv)
100 int retry_count= 4097;
101 int max_size = 65537;
104 for (j = i = 1; i<argc; i++) {
107 }
else if (
read_int(argv[i])>0 && j == 1) {
110 }
else if (
read_int(argv[i])>0 && j == 2) {
114 fprintf(stderr,
"probetest [-f <input format>] [<retry_count> [<max_size>]]\n");
119 if (max_size > 1000000000
U/8) {
120 fprintf(stderr,
"max_size out of bounds\n");
124 if (retry_count > 1000000000
U) {
125 fprintf(stderr,
"retry_count out of bounds\n");
132 for (size = 1; size < max_size; size *= 2) {
138 fprintf(stderr,
"out of memory\n");
144 fprintf(stderr,
"testing size=%d\n", size);
146 for (retry = 0; retry < retry_count; retry +=
FFMAX(size, 32)) {
147 for (type = 0; type < 4; type++) {
148 for (p = 0; p < 4096; p++) {
153 for (i = 0; i < size * 8; i++)
157 for (i = 0; i < size * 8; i++) {
158 unsigned int p2 = hist ? p & 0x3F : (p >> 6);
159 unsigned int v = (
av_lfg_get(&state) & 0xFFFFFFFF) > p2 << 26;
165 for (i = 0; i < size * 8; i++) {
166 unsigned int p2 = (p >> (hist * 3)) & 7;
167 unsigned int v = (
av_lfg_get(&state) & 0xFFFFFFFF) > p2 << 29;
169 hist = (2 * hist + v) & 3;
173 for (i = 0; i <
size; i++) {
177 if (c >=
'a' && c <=
'z' && (p & 1))
179 else if (c >=
'A' && c <=
'Z' && (p & 2))
181 else if (c >=
'0' && c <=
'9' && (p & 4))
183 else if (c ==
' ' && (p & 8))
185 else if (c == 0 && (p & 16))
187 else if (c == 1 && (p & 32))
194 probe(&pd, type, p, size);
Context structure for the Lagged Fibonacci PRNG.
void * av_realloc(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory.
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
static void probe(AVProbeData *pd, int type, int p, int size)
static int read_int(char *arg)
static int64_t time_array[MAX_FORMATS]
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
static const char * single_format
high precision timer, useful to profile code
static int score_array[MAX_FORMATS]
int buf_size
Size of buf except extra allocated bytes.
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
int main(int argc, char **argv)
const AVInputFormat * av_demuxer_iterate(void **opaque)
Iterate over all registered demuxers.
static unsigned int av_lfg_get(AVLFG *c)
Get the next random unsigned 32-bit number using an ALFG.
av_cold void av_lfg_init(AVLFG *c, unsigned int seed)
This structure contains the data a format has to probe a file.
static void flush_put_bits(PutBitContext *s)
Pad the end of the output stream with zeros.
static void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_size)
Initialize the PutBitContext s.
static void print_times(void)