mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
tests/capsfilter: Test caps-related queries and property
This commit is contained in:
parent
4cb596ddd6
commit
7854e392dd
1 changed files with 155 additions and 0 deletions
|
@ -78,6 +78,158 @@ GST_START_TEST (test_unfixed_downstream_caps)
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (test_caps_property)
|
||||||
|
{
|
||||||
|
GstElement *filter;
|
||||||
|
GstCaps *filter_caps;
|
||||||
|
const gchar *caps_str;
|
||||||
|
gchar *str;
|
||||||
|
|
||||||
|
filter = gst_check_setup_element ("capsfilter");
|
||||||
|
|
||||||
|
/* verify that the set caps are actually set */
|
||||||
|
caps_str = "audio/x-raw, rate=(int)44100, channels=(int)1";
|
||||||
|
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
fail_unless (GST_IS_CAPS (filter_caps));
|
||||||
|
g_object_set (filter, "caps", filter_caps, NULL);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
g_object_get (filter, "caps", &filter_caps, NULL);
|
||||||
|
str = gst_caps_to_string (filter_caps);
|
||||||
|
fail_unless (g_strcmp0 (str, caps_str) == 0);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
/* verify that new caps set replace the old ones */
|
||||||
|
caps_str = "video/x-raw, width=(int)320, height=(int)240";
|
||||||
|
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
fail_unless (GST_IS_CAPS (filter_caps));
|
||||||
|
g_object_set (filter, "caps", filter_caps, NULL);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
g_object_get (filter, "caps", &filter_caps, NULL);
|
||||||
|
str = gst_caps_to_string (filter_caps);
|
||||||
|
fail_unless (g_strcmp0 (str, caps_str) == 0);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
/* make sure that NULL caps is interpreted as ANY */
|
||||||
|
g_object_set (filter, "caps", NULL, NULL);
|
||||||
|
|
||||||
|
g_object_get (filter, "caps", &filter_caps, NULL);
|
||||||
|
fail_unless (gst_caps_is_any (filter_caps));
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
gst_object_unref (filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (test_caps_query)
|
||||||
|
{
|
||||||
|
GstElement *filter;
|
||||||
|
GstCaps *filter_caps;
|
||||||
|
const gchar *caps_str;
|
||||||
|
GstQuery *query;
|
||||||
|
GstCaps *caps;
|
||||||
|
|
||||||
|
filter = gst_check_setup_element ("capsfilter");
|
||||||
|
|
||||||
|
/* set some caps, do a caps query with a filter resulting in no
|
||||||
|
* intersecting caps */
|
||||||
|
caps_str = "audio/x-raw, rate=(int)44100, channels=(int)1";
|
||||||
|
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
fail_unless (GST_IS_CAPS (filter_caps));
|
||||||
|
g_object_set (filter, "caps", filter_caps, NULL);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
caps_str = "video/x-raw, width=(int)320, height=(int)240";
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
query = gst_query_new_caps (filter_caps);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
fail_unless (gst_element_query (filter, query));
|
||||||
|
gst_query_parse_caps_result (query, &caps);
|
||||||
|
fail_unless (gst_caps_is_empty (caps));
|
||||||
|
gst_query_unref (query);
|
||||||
|
|
||||||
|
gst_object_unref (filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
|
GST_START_TEST (test_accept_caps_query)
|
||||||
|
{
|
||||||
|
GstElement *filter;
|
||||||
|
GstCaps *filter_caps;
|
||||||
|
const gchar *caps_str;
|
||||||
|
GstQuery *query;
|
||||||
|
gboolean accepted;
|
||||||
|
GstPad *sinkpad;
|
||||||
|
GstPad *srcpad;
|
||||||
|
|
||||||
|
filter = gst_check_setup_element ("capsfilter");
|
||||||
|
|
||||||
|
/* set some caps on (both pads of) the capsfilter */
|
||||||
|
caps_str = "audio/x-raw, rate=(int)44100, channels=(int)1";
|
||||||
|
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
fail_unless (GST_IS_CAPS (filter_caps));
|
||||||
|
g_object_set (filter, "caps", filter_caps, NULL);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
|
||||||
|
sinkpad = gst_element_get_static_pad (filter, "sink");
|
||||||
|
|
||||||
|
/* check that the set caps are acceptable on the sinkpad */
|
||||||
|
caps_str = "audio/x-raw, rate=(int)44100, channels=(int)1";
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
query = gst_query_new_accept_caps (filter_caps);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
fail_unless (gst_pad_query (sinkpad, query));
|
||||||
|
gst_query_parse_accept_caps_result (query, &accepted);
|
||||||
|
fail_unless (accepted);
|
||||||
|
gst_query_unref (query);
|
||||||
|
|
||||||
|
/* and that unrelated caps are not acceptable */
|
||||||
|
caps_str = "video/x-raw, width=(int)320, height=(int)240";
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
query = gst_query_new_accept_caps (filter_caps);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
fail_unless (gst_pad_query (sinkpad, query));
|
||||||
|
gst_query_parse_accept_caps_result (query, &accepted);
|
||||||
|
fail_unless (!accepted);
|
||||||
|
gst_query_unref (query);
|
||||||
|
|
||||||
|
gst_object_unref (sinkpad);
|
||||||
|
|
||||||
|
/* now do the same for the src pad (which has the same caps) */
|
||||||
|
srcpad = gst_element_get_static_pad (filter, "src");
|
||||||
|
|
||||||
|
caps_str = "audio/x-raw, rate=(int)44100, channels=(int)1";
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
query = gst_query_new_accept_caps (filter_caps);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
fail_unless (gst_pad_query (srcpad, query));
|
||||||
|
gst_query_parse_accept_caps_result (query, &accepted);
|
||||||
|
fail_unless (accepted);
|
||||||
|
gst_query_unref (query);
|
||||||
|
|
||||||
|
caps_str = "video/x-raw, width=(int)320, height=(int)240";
|
||||||
|
filter_caps = gst_caps_from_string (caps_str);
|
||||||
|
query = gst_query_new_accept_caps (filter_caps);
|
||||||
|
gst_caps_unref (filter_caps);
|
||||||
|
fail_unless (gst_pad_query (srcpad, query));
|
||||||
|
gst_query_parse_accept_caps_result (query, &accepted);
|
||||||
|
fail_unless (!accepted);
|
||||||
|
gst_query_unref (query);
|
||||||
|
|
||||||
|
gst_object_unref (srcpad);
|
||||||
|
|
||||||
|
gst_object_unref (filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
static Suite *
|
static Suite *
|
||||||
capsfilter_suite (void)
|
capsfilter_suite (void)
|
||||||
{
|
{
|
||||||
|
@ -86,6 +238,9 @@ capsfilter_suite (void)
|
||||||
|
|
||||||
suite_add_tcase (s, tc_chain);
|
suite_add_tcase (s, tc_chain);
|
||||||
tcase_add_test (tc_chain, test_unfixed_downstream_caps);
|
tcase_add_test (tc_chain, test_unfixed_downstream_caps);
|
||||||
|
tcase_add_test (tc_chain, test_caps_property);
|
||||||
|
tcase_add_test (tc_chain, test_caps_query);
|
||||||
|
tcase_add_test (tc_chain, test_accept_caps_query);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue