|
|
|
@@ -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); |
|
|
|
} |
|
|
|
|