⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gstutils.c

📁 gnash 在pc和嵌入式下开发需要的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
GST_START_TEST (test_gdouble_to_guint64){  gdouble from[] = { 0., 1., 100., 10000., 9223372036854775808.,    9223372036854775809., 13835058055282163712.  };  guint64 to[] = { 0, 1, 100, 10000, G_GINT64_CONSTANT (1) << 63,    (G_GINT64_CONSTANT (1) << 63) + 1,    (G_GINT64_CONSTANT (1) << 63) + (G_GINT64_CONSTANT (1) << 62)  };  guint64 tolerance[] = { 0, 0, 0, 0, 0, 1, 1 };  gint i;  gdouble result;  guint64 delta;  for (i = 0; i < G_N_ELEMENTS (from); ++i) {    result = gst_util_gdouble_to_guint64 (from[i]);    delta = ABS (to[i] - result);    fail_unless (delta <= tolerance[i],        "Could not convert %f: %" G_GUINT64_FORMAT        " -> %d, got %d instead, delta of %e with tolerance of %e",        i, from[i], to[i], result, delta, tolerance[i]);  }}GST_END_TEST;#ifndef GST_DISABLE_PARSEGST_START_TEST (test_parse_bin_from_description){  struct  {    const gchar *bin_desc;    const gchar *pad_names;  } bin_tests[] = {    {    "identity", "identity0/sink,identity0/src"}, {    "identity ! identity ! identity", "identity1/sink,identity3/src"}, {    "identity ! fakesink", "identity4/sink"}, {    "fakesrc ! identity", "identity5/src"}, {    "fakesrc ! fakesink", ""}  };  gint i;  for (i = 0; i < G_N_ELEMENTS (bin_tests); ++i) {    GstElement *bin, *parent;    GString *s;    GstPad *ghost_pad, *target_pad;    GError *err = NULL;    bin = gst_parse_bin_from_description (bin_tests[i].bin_desc, TRUE, &err);    if (err) {      g_error ("ERROR in gst_parse_bin_from_description (%s): %s",          bin_tests[i].bin_desc, err->message);    }    g_assert (bin != NULL);    s = g_string_new ("");    if ((ghost_pad = gst_element_get_pad (bin, "sink"))) {      g_assert (GST_IS_GHOST_PAD (ghost_pad));      target_pad = gst_ghost_pad_get_target (GST_GHOST_PAD (ghost_pad));      g_assert (target_pad != NULL);      g_assert (GST_IS_PAD (target_pad));      parent = gst_pad_get_parent_element (target_pad);      g_assert (parent != NULL);      g_string_append_printf (s, "%s/sink", GST_ELEMENT_NAME (parent));      gst_object_unref (parent);      gst_object_unref (target_pad);      gst_object_unref (ghost_pad);    }    if ((ghost_pad = gst_element_get_pad (bin, "src"))) {      g_assert (GST_IS_GHOST_PAD (ghost_pad));      target_pad = gst_ghost_pad_get_target (GST_GHOST_PAD (ghost_pad));      g_assert (target_pad != NULL);      g_assert (GST_IS_PAD (target_pad));      parent = gst_pad_get_parent_element (target_pad);      g_assert (parent != NULL);      if (s->len > 0) {        g_string_append (s, ",");      }      g_string_append_printf (s, "%s/src", GST_ELEMENT_NAME (parent));      gst_object_unref (parent);      gst_object_unref (target_pad);      gst_object_unref (ghost_pad);    }    if (strcmp (s->str, bin_tests[i].pad_names) != 0) {      g_error ("FAILED: expted '%s', got '%s' for bin '%s'",          bin_tests[i].pad_names, s->str, bin_tests[i].bin_desc);    }    g_string_free (s, TRUE);    gst_object_unref (bin);  }}GST_END_TEST;#endifGST_START_TEST (test_element_found_tags){  GstElement *pipeline, *fakesrc, *fakesink;  GstTagList *list;  GstBus *bus;  GstMessage *message;  pipeline = gst_element_factory_make ("pipeline", NULL);  fakesrc = gst_element_factory_make ("fakesrc", NULL);  fakesink = gst_element_factory_make ("fakesink", NULL);  list = gst_tag_list_new ();  g_object_set (fakesrc, "num-buffers", (int) 10, NULL);  gst_bin_add_many (GST_BIN (pipeline), fakesrc, fakesink, NULL);  gst_element_link (fakesrc, fakesink);  gst_element_set_state (pipeline, GST_STATE_PLAYING);  gst_element_found_tags (GST_ELEMENT (fakesrc), list);  bus = gst_element_get_bus (pipeline);  message = gst_bus_poll (bus, GST_MESSAGE_EOS, -1);  gst_message_unref (message);  gst_object_unref (bus);  /* FIXME: maybe also check if the fakesink receives the message */  gst_element_set_state (pipeline, GST_STATE_NULL);  gst_object_unref (pipeline);}GST_END_TEST;GST_START_TEST (test_element_unlink){  GstElement *src, *sink;  src = gst_element_factory_make ("fakesrc", NULL);  sink = gst_element_factory_make ("fakesink", NULL);  fail_unless (gst_element_link (src, sink) != FALSE);  gst_element_unlink (src, sink);  gst_object_unref (src);  gst_object_unref (sink);}GST_END_TEST;GST_START_TEST (test_set_value_from_string){  GValue val = { 0, };  /* g_return_if_fail */  ASSERT_CRITICAL (gst_util_set_value_from_string (NULL, "xyz"));  g_value_init (&val, G_TYPE_STRING);  ASSERT_CRITICAL (gst_util_set_value_from_string (&val, NULL));  g_value_unset (&val);  /* string => string */  g_value_init (&val, G_TYPE_STRING);  gst_util_set_value_from_string (&val, "Y00");  fail_unless (g_value_get_string (&val) != NULL);  fail_unless_equals_string (g_value_get_string (&val), "Y00");  g_value_unset (&val);  /* string => int */  g_value_init (&val, G_TYPE_INT);  gst_util_set_value_from_string (&val, "987654321");  fail_unless (g_value_get_int (&val) == 987654321);  g_value_unset (&val);  g_value_init (&val, G_TYPE_INT);  ASSERT_CRITICAL (gst_util_set_value_from_string (&val, "xyz"));  g_value_unset (&val);  /* string => uint */  g_value_init (&val, G_TYPE_UINT);  gst_util_set_value_from_string (&val, "987654321");  fail_unless (g_value_get_uint (&val) == 987654321);  g_value_unset (&val);  /* CHECKME: is this really desired behaviour? (tpm) */  g_value_init (&val, G_TYPE_UINT);  gst_util_set_value_from_string (&val, "-999");  fail_unless (g_value_get_uint (&val) == ((guint) 0 - (guint) 999));  g_value_unset (&val);  g_value_init (&val, G_TYPE_UINT);  ASSERT_CRITICAL (gst_util_set_value_from_string (&val, "xyz"));  g_value_unset (&val);  /* string => long */  g_value_init (&val, G_TYPE_LONG);  gst_util_set_value_from_string (&val, "987654321");  fail_unless (g_value_get_long (&val) == 987654321);  g_value_unset (&val);  g_value_init (&val, G_TYPE_LONG);  ASSERT_CRITICAL (gst_util_set_value_from_string (&val, "xyz"));  g_value_unset (&val);  /* string => ulong */  g_value_init (&val, G_TYPE_ULONG);  gst_util_set_value_from_string (&val, "987654321");  fail_unless (g_value_get_ulong (&val) == 987654321);  g_value_unset (&val);  /* CHECKME: is this really desired behaviour? (tpm) */  g_value_init (&val, G_TYPE_ULONG);  gst_util_set_value_from_string (&val, "-999");  fail_unless (g_value_get_ulong (&val) == ((gulong) 0 - (gulong) 999));  g_value_unset (&val);  g_value_init (&val, G_TYPE_ULONG);  ASSERT_CRITICAL (gst_util_set_value_from_string (&val, "xyz"));  g_value_unset (&val);  /* string => boolean */  g_value_init (&val, G_TYPE_BOOLEAN);  gst_util_set_value_from_string (&val, "true");  fail_unless_equals_int (g_value_get_boolean (&val), TRUE);  g_value_unset (&val);  g_value_init (&val, G_TYPE_BOOLEAN);  gst_util_set_value_from_string (&val, "TRUE");  fail_unless_equals_int (g_value_get_boolean (&val), TRUE);  g_value_unset (&val);  g_value_init (&val, G_TYPE_BOOLEAN);  gst_util_set_value_from_string (&val, "false");  fail_unless_equals_int (g_value_get_boolean (&val), FALSE);  g_value_unset (&val);  g_value_init (&val, G_TYPE_BOOLEAN);  gst_util_set_value_from_string (&val, "FALSE");  fail_unless_equals_int (g_value_get_boolean (&val), FALSE);  g_value_unset (&val);  g_value_init (&val, G_TYPE_BOOLEAN);  gst_util_set_value_from_string (&val, "bleh");  fail_unless_equals_int (g_value_get_boolean (&val), FALSE);  g_value_unset (&val);#if 0  /* string => float (yay, localisation issues involved) */  g_value_init (&val, G_TYPE_FLOAT);  gst_util_set_value_from_string (&val, "987.654");  fail_unless (g_value_get_float (&val) >= 987.653 &&      g_value_get_float (&val) <= 987.655);  g_value_unset (&val);  g_value_init (&val, G_TYPE_FLOAT);  gst_util_set_value_from_string (&val, "987,654");  fail_unless (g_value_get_float (&val) >= 987.653 &&      g_value_get_float (&val) <= 987.655);  g_value_unset (&val);  /* string => double (yay, localisation issues involved) */  g_value_init (&val, G_TYPE_DOUBLE);  gst_util_set_value_from_string (&val, "987.654");  fail_unless (g_value_get_double (&val) >= 987.653 &&      g_value_get_double (&val) <= 987.655);  g_value_unset (&val);  g_value_init (&val, G_TYPE_DOUBLE);  gst_util_set_value_from_string (&val, "987,654");  fail_unless (g_value_get_double (&val) >= 987.653 &&      g_value_get_double (&val) <= 987.655);  g_value_unset (&val);#endif}GST_END_TEST;Suite *gst_utils_suite (void){  Suite *s = suite_create ("GstUtils");  TCase *tc_chain = tcase_create ("general");  suite_add_tcase (s, tc_chain);  tcase_add_test (tc_chain, test_buffer_probe_n_times);  tcase_add_test (tc_chain, test_buffer_probe_once);  tcase_add_test (tc_chain, test_math_scale);  tcase_add_test (tc_chain, test_math_scale_uint64);  tcase_add_test (tc_chain, test_math_scale_random);  tcase_add_test (tc_chain, test_guint64_to_gdouble);  tcase_add_test (tc_chain, test_gdouble_to_guint64);#ifndef GST_DISABLE_PARSE  tcase_add_test (tc_chain, test_parse_bin_from_description);#endif  tcase_add_test (tc_chain, test_element_found_tags);  tcase_add_test (tc_chain, test_element_unlink);  tcase_add_test (tc_chain, test_set_value_from_string);  return s;}GST_CHECK_MAIN (gst_utils);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -