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

📄 controller.c

📁 gnash 在pc和嵌入式下开发需要的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
  /* that property should exist and should be controllable */  ctrl = gst_controller_new (G_OBJECT (elem), "ulong", NULL);  fail_unless (ctrl != NULL, NULL);  /* Get interpolation control source */  csource = gst_interpolation_control_source_new ();  fail_unless (csource != NULL);  fail_unless (gst_controller_set_control_source (ctrl, "ulong",          GST_CONTROL_SOURCE (csource)));  /* set interpolation mode */  fail_unless (gst_interpolation_control_source_set_interpolation_mode (csource,          GST_INTERPOLATE_LINEAR));  /* Should fail if no value was set yet */  g_value_init (&val_ulong, G_TYPE_ULONG);  fail_if (gst_control_source_get_value (GST_CONTROL_SOURCE (csource),          0 * GST_SECOND, &val_ulong));  /* set control values */  g_value_set_ulong (&val_ulong, 0);  res =      gst_interpolation_control_source_set (csource, 1 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  g_value_set_ulong (&val_ulong, 100);  res =      gst_interpolation_control_source_set (csource, 3 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  /* now pull in values for some timestamps */  /* should give the value of the first control point for timestamps before it */  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  gst_controller_sync_values (ctrl, 3 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  /* set control values */  g_value_set_ulong (&val_ulong, 0);  res =      gst_interpolation_control_source_set (csource, 0 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  g_value_set_ulong (&val_ulong, 100);  res =      gst_interpolation_control_source_set (csource, 2 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  /* unset the old ones */  res = gst_interpolation_control_source_unset (csource, 1 * GST_SECOND);  fail_unless (res, NULL);  res = gst_interpolation_control_source_unset (csource, 3 * GST_SECOND);  fail_unless (res, NULL);  /* now pull in values for some timestamps */  /* should now give our value for timestamp 0 */  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  g_object_unref (G_OBJECT (csource));  GST_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test gst_controller_set_disabled() with linear interpolation */GST_START_TEST (controller_interpolate_linear_disabled){  GstController *ctrl;  GstInterpolationControlSource *csource, *csource2;  GstElement *elem;  gboolean res;  GValue val_ulong = { 0, }  , val_double = {  0,};  gst_controller_init (NULL, NULL);  elem = gst_element_factory_make ("testmonosource", "test_source");  /* that property should exist and should be controllable */  ctrl = gst_controller_new (G_OBJECT (elem), "ulong", "double", NULL);  fail_unless (ctrl != NULL, NULL);  /* Get interpolation control source */  csource = gst_interpolation_control_source_new ();  csource2 = gst_interpolation_control_source_new ();  fail_unless (csource != NULL);  fail_unless (gst_controller_set_control_source (ctrl, "ulong",          GST_CONTROL_SOURCE (csource)));  fail_unless (csource2 != NULL);  fail_unless (gst_controller_set_control_source (ctrl, "double",          GST_CONTROL_SOURCE (csource2)));  /* set interpolation mode */  fail_unless (gst_interpolation_control_source_set_interpolation_mode (csource,          GST_INTERPOLATE_LINEAR));  fail_unless (gst_interpolation_control_source_set_interpolation_mode      (csource2, GST_INTERPOLATE_LINEAR));  /* set control values */  g_value_init (&val_ulong, G_TYPE_ULONG);  g_value_set_ulong (&val_ulong, 0);  res =      gst_interpolation_control_source_set (csource, 0 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  g_value_set_ulong (&val_ulong, 100);  res =      gst_interpolation_control_source_set (csource, 2 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  g_object_unref (G_OBJECT (csource));/* set control values */  g_value_init (&val_double, G_TYPE_DOUBLE);  g_value_set_double (&val_double, 2.0);  res =      gst_interpolation_control_source_set (csource2, 0 * GST_SECOND,      &val_double);  fail_unless (res, NULL);  g_value_set_double (&val_double, 4.0);  res =      gst_interpolation_control_source_set (csource2, 2 * GST_SECOND,      &val_double);  fail_unless (res, NULL);  g_object_unref (G_OBJECT (csource2));  /* now pull in values for some timestamps */  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 2.0, NULL);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 3.0, NULL);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 4.0, NULL);  /* now pull in values for some timestamps, prop double disabled */  GST_TEST_MONO_SOURCE (elem)->val_ulong = 0;  GST_TEST_MONO_SOURCE (elem)->val_double = 0.0;  gst_controller_set_property_disabled (ctrl, "double", TRUE);  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 0.0, NULL);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 0.0, NULL);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 0.0, NULL);  /* now pull in values for some timestamps, after enabling double again */  GST_TEST_MONO_SOURCE (elem)->val_ulong = 0;  GST_TEST_MONO_SOURCE (elem)->val_double = 0.0;  gst_controller_set_property_disabled (ctrl, "double", FALSE);  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 2.0, NULL);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 3.0, NULL);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 4.0, NULL);  /* now pull in values for some timestamps, after disabling all props */  GST_TEST_MONO_SOURCE (elem)->val_ulong = 0;  GST_TEST_MONO_SOURCE (elem)->val_double = 0.0;  gst_controller_set_disabled (ctrl, TRUE);  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 0.0, NULL);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 0.0, NULL);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 0.0, NULL);  /* now pull in values for some timestamps, enabling double again */  GST_TEST_MONO_SOURCE (elem)->val_ulong = 0;  GST_TEST_MONO_SOURCE (elem)->val_double = 0.0;  gst_controller_set_property_disabled (ctrl, "double", FALSE);  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 2.0, NULL);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 3.0, NULL);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 4.0, NULL);  /* now pull in values for some timestamps, enabling all */  GST_TEST_MONO_SOURCE (elem)->val_ulong = 0;  GST_TEST_MONO_SOURCE (elem)->val_double = 0.0;  gst_controller_set_disabled (ctrl, FALSE);  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 2.0, NULL);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 3.0, NULL);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double == 4.0, NULL);  GST_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;GST_START_TEST (controller_interpolation_set_from_list){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstTimedValue *tval;  GstElement *elem;  GSList *list = NULL;  gst_controller_init (NULL, NULL);  /* test that an invalid timestamp throws a warning of some sort */  elem = gst_element_factory_make ("testmonosource", "test_source");  /* that property should exist and should be controllable */  ctrl = gst_controller_new (G_OBJECT (elem), "ulong", NULL);  fail_unless (ctrl != NULL, NULL);  /* Get interpolation control source */  csource = gst_interpolation_control_source_new ();  fail_unless (csource != NULL);  fail_unless (gst_controller_set_control_source (ctrl, "ulong",          GST_CONTROL_SOURCE (csource)));  /* set interpolation mode */  fail_unless (gst_interpolation_control_source_set_interpolation_mode (csource,          GST_INTERPOLATE_LINEAR));  /* set control value */  tval = g_new0 (GstTimedValue, 1);  tval->timestamp = GST_CLOCK_TIME_NONE;  g_value_init (&tval->value, G_TYPE_ULONG);  g_value_set_ulong (&tval->value, 0);  list = g_slist_append (list, tval);  fail_if (gst_interpolation_control_source_set_from_list (csource, list));  /* try again with a valid stamp, should work now */  tval->timestamp = 0;  fail_unless (gst_interpolation_control_source_set_from_list (csource, list));  g_object_unref (csource);  /* allocated GstTimedValue now belongs to the controller, but list not */  g_value_unset (&tval->value);  g_free (tval);  g_slist_free (list);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test lfo control source with sine waveform */GST_START_TEST (controller_lfo_sine){  GstController *ctrl;  GstLFOControlSource *csource;  GstElement *elem;  GValue amp = { 0, }  , off = {  0,};  gst_controller_init (NULL, NULL);  elem = gst_element_factory_make ("testmonosource", "test_source");  /* that property should exist and should be controllable */  ctrl = gst_controller_new (G_OBJECT (elem), "ulong", NULL);  fail_unless (ctrl != NULL, NULL);  /* Get interpolation control source */  csource = gst_lfo_control_source_new ();  fail_unless (csource != NULL);  fail_unless (gst_controller_set_control_source (ctrl, "ulong",          GST_CONTROL_SOURCE (csource)));  /* set amplitude and offset values */  g_value_init (&amp, G_TYPE_ULONG);  g_value_init (&off, G_TYPE_ULONG);  g_value_set_ulong (&amp, 100);  g_value_set_ulong (&off, 100);  /* set waveform mode */  g_object_set (csource, "waveform", GST_LFO_WAVEFORM_SINE,      "frequency", 1.0, "timeshift", (GstClockTime) 0,      "amplitude", &amp, "offset", &off, NULL);  g_object_unref (G_OBJECT (csource));  /* now pull in values for some timestamps */  gst_controller_sync_values (ctrl, 0 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  gst_controller_sync_values (ctrl, 250 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 200);;  gst_controller_sync_values (ctrl, 500 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  gst_controller_sync_values (ctrl, 750 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  gst_controller_sync_values (ctrl, 1000 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  gst_controller_sync_values (ctrl, 1250 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 200);;  gst_controller_sync_values (ctrl, 1500 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  gst_controller_sync_values (ctrl, 1750 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  gst_controller_sync_values (ctrl, 2000 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  gst_controller_sync_values (ctrl, 1250 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 200);;  gst_controller_sync_values (ctrl, 1500 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  gst_controller_sync_values (ctrl, 1750 * GST_MSECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 0);;  GST_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test lfo control source with sine waveform and timeshift */GST_START_TEST (controller_lfo_sine_timeshift){  GstController *ctrl;  GstLFOControlSource *csource;  GstElement *elem;  GValue amp = { 0, }  , off = {  0,};  gst_controller_init (NULL, NULL);  elem = gst_element_factory_make ("testmonosource", "test_source");  /* that property should exist and should be controllable */  ctrl = gst_controller_new (G_OBJECT (elem), "ulong", NULL);  fail_unless (ctrl != NULL, NULL);  /* Get interpolation control source */

⌨️ 快捷键说明

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