mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavu/opt: update tests
In general this commit prepares opt tests to be added to fate. The commit set some non-zero defaults for test options. It allows to check if defaults are really set. Added printing of default values. Added more cases for testing av_set_options_string Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
This commit is contained in:
parent
4efc79649b
commit
b54effba4f
@ -1743,6 +1743,11 @@ typedef struct TestContext
|
||||
int64_t duration;
|
||||
uint8_t color[4];
|
||||
int64_t channel_layout;
|
||||
void *binary;
|
||||
int binary_size;
|
||||
int64_t num64;
|
||||
float flt;
|
||||
double dbl;
|
||||
} TestContext;
|
||||
|
||||
#define OFFSET(x) offsetof(TestContext, x)
|
||||
@ -1753,20 +1758,24 @@ typedef struct TestContext
|
||||
|
||||
static const AVOption test_options[]= {
|
||||
{"num", "set num", OFFSET(num), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 100 },
|
||||
{"toggle", "set toggle", OFFSET(toggle), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1 },
|
||||
{"rational", "set rational", OFFSET(rational), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, 0, 10 },
|
||||
{"toggle", "set toggle", OFFSET(toggle), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1 },
|
||||
{"rational", "set rational", OFFSET(rational), AV_OPT_TYPE_RATIONAL, {.dbl = 1}, 0, 10 },
|
||||
{"string", "set string", OFFSET(string), AV_OPT_TYPE_STRING, {.str = "default"}, CHAR_MIN, CHAR_MAX },
|
||||
{"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, 0, INT_MAX, 0, "flags" },
|
||||
{"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = 1}, 0, INT_MAX, 0, "flags" },
|
||||
{"cool", "set cool flag ", 0, AV_OPT_TYPE_CONST, {.i64 = TEST_FLAG_COOL}, INT_MIN, INT_MAX, 0, "flags" },
|
||||
{"lame", "set lame flag ", 0, AV_OPT_TYPE_CONST, {.i64 = TEST_FLAG_LAME}, INT_MIN, INT_MAX, 0, "flags" },
|
||||
{"mu", "set mu flag ", 0, AV_OPT_TYPE_CONST, {.i64 = TEST_FLAG_MU}, INT_MIN, INT_MAX, 0, "flags" },
|
||||
{"size", "set size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE,{0}, 0, 0 },
|
||||
{"pix_fmt", "set pixfmt", OFFSET(pix_fmt), AV_OPT_TYPE_PIXEL_FMT, {.i64 = AV_PIX_FMT_NONE}, -1, INT_MAX},
|
||||
{"sample_fmt", "set samplefmt", OFFSET(sample_fmt), AV_OPT_TYPE_SAMPLE_FMT, {.i64 = AV_SAMPLE_FMT_NONE}, -1, INT_MAX},
|
||||
{"size", "set size", OFFSET(w), AV_OPT_TYPE_IMAGE_SIZE,{.str="200x300"}, 0, 0 },
|
||||
{"pix_fmt", "set pixfmt", OFFSET(pix_fmt), AV_OPT_TYPE_PIXEL_FMT, {.i64 = AV_PIX_FMT_0BGR}, -1, INT_MAX},
|
||||
{"sample_fmt", "set samplefmt", OFFSET(sample_fmt), AV_OPT_TYPE_SAMPLE_FMT, {.i64 = AV_SAMPLE_FMT_S16}, -1, INT_MAX},
|
||||
{"video_rate", "set videorate", OFFSET(video_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, 0 },
|
||||
{"duration", "set duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64 = 0}, 0, INT64_MAX},
|
||||
{"duration", "set duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64 = 1000}, 0, INT64_MAX},
|
||||
{"color", "set color", OFFSET(color), AV_OPT_TYPE_COLOR, {.str = "pink"}, 0, 0},
|
||||
{"cl", "set channel layout", OFFSET(channel_layout), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64 = AV_CH_LAYOUT_HEXAGONAL}, 0, INT64_MAX},
|
||||
{"bin", "set binary value", OFFSET(binary), AV_OPT_TYPE_BINARY, {.str="62696e00"}, 0, 0 },
|
||||
{"num64", "set num 64bit", OFFSET(num64), AV_OPT_TYPE_INT64, {.i64 = 1}, 0, 100 },
|
||||
{"flt", "set float", OFFSET(flt), AV_OPT_TYPE_FLOAT, {.dbl = 1.0/3}, 0, 100 },
|
||||
{"dbl", "set double", OFFSET(dbl), AV_OPT_TYPE_DOUBLE, {.dbl = 1.0/3}, 0, 100 },
|
||||
{NULL},
|
||||
};
|
||||
|
||||
@ -1785,6 +1794,32 @@ int main(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
printf("Testing default values\n");
|
||||
{
|
||||
TestContext test_ctx = { 0 };
|
||||
test_ctx.class = &test_class;
|
||||
av_opt_set_defaults(&test_ctx);
|
||||
|
||||
printf("num=%d\n", test_ctx.num);
|
||||
printf("toggle=%d\n", test_ctx.toggle);
|
||||
printf("string=%s\n", test_ctx.string);
|
||||
printf("flags=%d\n", test_ctx.flags);
|
||||
printf("rational=%d/%d\n", test_ctx.rational.num, test_ctx.rational.den);
|
||||
printf("video_rate=%d/%d\n", test_ctx.video_rate.num, test_ctx.video_rate.den);
|
||||
printf("width=%d height=%d\n", test_ctx.w, test_ctx.h);
|
||||
printf("pix_fmt=%s\n", av_get_pix_fmt_name(test_ctx.pix_fmt));
|
||||
printf("sample_fmt=%s\n", av_get_sample_fmt_name(test_ctx.sample_fmt));
|
||||
printf("duration=%"PRId64"\n", test_ctx.duration);
|
||||
printf("color=%d %d %d %d\n", test_ctx.color[0], test_ctx.color[1], test_ctx.color[2], test_ctx.color[3]);
|
||||
printf("channel_layout=%"PRId64"=%"PRId64"\n", test_ctx.channel_layout, (int64_t)AV_CH_LAYOUT_HEXAGONAL);
|
||||
if (test_ctx.binary)
|
||||
printf("binary=%x %x %x %x\n", ((uint8_t*)test_ctx.binary)[0], ((uint8_t*)test_ctx.binary)[1], ((uint8_t*)test_ctx.binary)[2], ((uint8_t*)test_ctx.binary)[3]);
|
||||
printf("binary_size=%d\n", test_ctx.binary_size);
|
||||
printf("num64=%"PRId64"\n", test_ctx.num64);
|
||||
printf("flt=%.6f\n", test_ctx.flt);
|
||||
printf("dbl=%.6f\n", test_ctx.dbl);
|
||||
}
|
||||
|
||||
printf("\nTesting av_set_options_string()\n");
|
||||
{
|
||||
TestContext test_ctx = { 0 };
|
||||
@ -1830,18 +1865,37 @@ int main(void)
|
||||
"color=0x42FF07AA",
|
||||
"cl=stereo+downmix",
|
||||
"cl=foo",
|
||||
"bin=boguss",
|
||||
"bin=111",
|
||||
"bin=ffff",
|
||||
"num64=bogus",
|
||||
"num64=44",
|
||||
"num64=44.4",
|
||||
"num64=-1",
|
||||
"num64=101",
|
||||
"flt=bogus",
|
||||
"flt=2",
|
||||
"flt=2.2",
|
||||
"flt=-1",
|
||||
"flt=101",
|
||||
"dbl=bogus",
|
||||
"dbl=2",
|
||||
"dbl=2.2",
|
||||
"dbl=-1",
|
||||
"dbl=101",
|
||||
};
|
||||
|
||||
test_ctx.class = &test_class;
|
||||
av_opt_set_defaults(&test_ctx);
|
||||
|
||||
av_log_set_level(AV_LOG_DEBUG);
|
||||
av_log_set_level(AV_LOG_QUIET);
|
||||
|
||||
for (i=0; i < FF_ARRAY_ELEMS(options); i++) {
|
||||
av_log(&test_ctx, AV_LOG_DEBUG, "Setting options string '%s'\n", options[i]);
|
||||
if (av_set_options_string(&test_ctx, options[i], "=", ":") < 0)
|
||||
av_log(&test_ctx, AV_LOG_ERROR, "Error setting options string: '%s'\n", options[i]);
|
||||
printf("\n");
|
||||
printf("Error '%s'\n", options[i]);
|
||||
else
|
||||
printf("OK '%s'\n", options[i]);
|
||||
}
|
||||
av_opt_free(&test_ctx);
|
||||
}
|
||||
@ -1865,13 +1919,14 @@ int main(void)
|
||||
test_ctx.class = &test_class;
|
||||
av_opt_set_defaults(&test_ctx);
|
||||
|
||||
av_log_set_level(AV_LOG_DEBUG);
|
||||
av_log_set_level(AV_LOG_QUIET);
|
||||
|
||||
for (i=0; i < FF_ARRAY_ELEMS(options); i++) {
|
||||
av_log(&test_ctx, AV_LOG_DEBUG, "Setting options string '%s'\n", options[i]);
|
||||
if (av_opt_set_from_string(&test_ctx, options[i], shorthand, "=", ":") < 0)
|
||||
av_log(&test_ctx, AV_LOG_ERROR, "Error setting options string: '%s'\n", options[i]);
|
||||
printf("\n");
|
||||
printf("Error '%s'\n", options[i]);
|
||||
else
|
||||
printf("OK '%s'\n", options[i]);
|
||||
}
|
||||
av_opt_free(&test_ctx);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user