diff --git a/spa/tests/test-props.c b/spa/tests/test-props.c index 9d2c9de98..3b3e51c21 100644 --- a/spa/tests/test-props.c +++ b/spa/tests/test-props.c @@ -60,6 +60,61 @@ spa_build (SPA_MEDIA_TYPE_VIDEO, SPA_MEDIA_SUBTYPE_RAW, 0); #endif +static const struct _test_format { + SpaFormat fmt; + + struct { + SpaPODProp prop_format; + struct { + uint32_t def_format; + uint32_t enum_format[2]; + } format_vals; + uint32_t pad; + + SpaPODProp prop_size; + struct { + SpaRectangle def_size; + SpaRectangle min_size; + SpaRectangle max_size; + } size_vals; + + SpaPODProp prop_framerate; + struct { + SpaFraction def_framerate; + SpaFraction min_framerate; + SpaFraction max_framerate; + } framerate_vals; + } props; +} test_format = { + { SPA_MEDIA_TYPE_VIDEO, + SPA_MEDIA_SUBTYPE_RAW, + { { sizeof (test_format.props) + sizeof (SpaPODObjectBody), SPA_POD_TYPE_OBJECT }, + { 0, 0 } }, + }, { + { { sizeof (test_format.props.format_vals) + sizeof (SpaPODPropBody), + SPA_POD_TYPE_PROP } , + { SPA_PROP_ID_VIDEO_FORMAT, SPA_POD_PROP_RANGE_ENUM | SPA_POD_PROP_FLAG_UNSET, + { sizeof (uint32_t), SPA_POD_TYPE_INT } }, }, + { SPA_VIDEO_FORMAT_I420, + { SPA_VIDEO_FORMAT_I420, SPA_VIDEO_FORMAT_YUY2 } }, 0, + + { { sizeof (test_format.props.size_vals) + sizeof (SpaPODPropBody), + SPA_POD_TYPE_PROP } , + { SPA_PROP_ID_VIDEO_SIZE, SPA_POD_PROP_RANGE_MIN_MAX | SPA_POD_PROP_FLAG_UNSET, + { sizeof (SpaRectangle), SPA_POD_TYPE_RECTANGLE } }, }, + { { 320, 240 }, + { 1, 1 }, + { INT32_MAX, INT32_MAX } }, + + { { sizeof (test_format.props.framerate_vals) + sizeof (SpaPODPropBody), + SPA_POD_TYPE_PROP } , + { SPA_PROP_ID_VIDEO_FRAMERATE, SPA_POD_PROP_RANGE_MIN_MAX | SPA_POD_PROP_FLAG_UNSET, + { sizeof (SpaFraction), SPA_POD_TYPE_FRACTION } }, }, + { { 25, 1 }, + { 0, 1 }, + { INT32_MAX, 1 } }, + } +}; int main (int argc, char *argv[]) @@ -128,10 +183,12 @@ main (int argc, char *argv[]) INT32_MAX, 1, 0); - printf ("%zd\n", o); fmt = SPA_MEMBER (buffer, o, SpaFormat); - printf ("%d %d\n", fmt->media_type, fmt->media_subtype); spa_debug_pod (&fmt->obj.pod); + spa_debug_format (fmt); + + spa_debug_pod (&test_format.fmt.obj.pod); + spa_debug_format (&test_format.fmt); return 0; } diff --git a/spa/tests/test-props2.c b/spa/tests/test-props2.c index e12956a5d..f6d299d5a 100644 --- a/spa/tests/test-props2.c +++ b/spa/tests/test-props2.c @@ -33,90 +33,6 @@ #include #include -static void -print_value (uint32_t size, uint32_t type, void *body, int prefix, uint32_t flags) -{ - switch (type) { - case SPA_POD_TYPE_BOOL: - printf ("%-*sBool %d\n", prefix, "", *(int32_t *) body); - break; - case SPA_POD_TYPE_INT: - printf ("%-*sInt %d\n", prefix, "", *(int32_t *) body); - break; - case SPA_POD_TYPE_LONG: - printf ("%-*sLong %"PRIi64"\n", prefix, "", *(int64_t *) body); - break; - case SPA_POD_TYPE_FLOAT: - printf ("%-*sFloat %f\n", prefix, "", *(float *) body); - break; - case SPA_POD_TYPE_DOUBLE: - printf ("%-*sDouble %g\n", prefix, "", *(double *) body); - break; - case SPA_POD_TYPE_STRING: - printf ("%-*sString %s\n", prefix, "", (char *) body); - break; - case SPA_POD_TYPE_RECTANGLE: - { - SpaRectangle *r = body; - printf ("%-*sRectangle %dx%d\n", prefix, "", r->width, r->height); - break; - } - case SPA_POD_TYPE_FRACTION: - { - SpaFraction *f = body; - printf ("%-*sFraction %d/%d\n", prefix, "", f->num, f->denom); - break; - } - case SPA_POD_TYPE_BITMASK: - printf ("%-*sBitmask\n", prefix, ""); - break; - case SPA_POD_TYPE_ARRAY: - { - SpaPODArrayBody *b = body; - void *p; - printf ("%-*sArray: child.size %d, child.type %d\n", prefix, "", b->child.size, b->child.type); - - SPA_POD_ARRAY_BODY_FOREACH (b, size, p) - print_value (b->child.size, b->child.type, p, prefix + 2, flags); - break; - } - case SPA_POD_TYPE_STRUCT: - { - SpaPOD *b = body, *p; - printf ("%-*sStruct: size %d\n", prefix, "", size); - SPA_POD_STRUCT_BODY_FOREACH (b, size, p) - print_value (p->size, p->type, SPA_POD_BODY (p), prefix + 2, flags); - break; - } - case SPA_POD_TYPE_OBJECT: - { - SpaPODObjectBody *b = body; - SpaPODProp *p; - void *alt; - int i; - - printf ("%-*sObject: size %d\n", prefix, "", size); - SPA_POD_OBJECT_BODY_FOREACH (b, size, p) { - printf ("%-*sProp: key %d, flags %d\n", prefix + 2, "", p->body.key, p->body.flags); - if (p->body.flags & SPA_POD_PROP_FLAG_UNSET) - printf ("%-*sUnset (Default):\n", prefix + 4, ""); - else - printf ("%-*sValue:\n", prefix + 4, ""); - print_value (p->body.value.size, p->body.value.type, SPA_POD_BODY (&p->body.value), prefix + 6, p->body.flags); - - i = 0; - SPA_POD_PROP_ALTERNATIVE_FOREACH (&p->body, p->pod.size, alt) { - if (i == 0) - printf ("%-*sAlternatives:\n", prefix + 4, ""); - print_value (p->body.value.size, p->body.value.type, alt, prefix + 6, p->body.flags); - i++; - } - } - break; - } - } -} - int main (int argc, char *argv[]) { @@ -172,7 +88,7 @@ main (int argc, char *argv[]) SpaPODProp *p = spa_pod_object_body_find_prop (SPA_POD_BODY (obj), obj->size, 4); printf ("%d %d\n", p->body.key, p->body.flags); - print_value (p->body.value.size, p->body.value.type, SPA_POD_BODY (&p->body.value), 0, 0); + spa_debug_pod (&p->body.value); return 0; }