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

📄 controller.c

📁 gnash 在pc和嵌入式下开发需要的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
  ctrl = gst_controller_new (G_OBJECT (elem), "double", 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, "double",          GST_CONTROL_SOURCE (csource)));  /* set interpolation mode */  fail_unless (gst_interpolation_control_source_set_interpolation_mode (csource,          GST_INTERPOLATE_CUBIC));  /* set control values */  g_value_init (&val_double, G_TYPE_DOUBLE);  g_value_set_double (&val_double, 0.0);  res =      gst_interpolation_control_source_set (csource, 0 * GST_SECOND,      &val_double);  fail_unless (res, NULL);  g_value_set_double (&val_double, 5.0);  res =      gst_interpolation_control_source_set (csource, 1 * GST_SECOND,      &val_double);  fail_unless (res, NULL);  g_value_set_double (&val_double, 2.0);  res =      gst_interpolation_control_source_set (csource, 2 * GST_SECOND,      &val_double);  fail_unless (res, NULL);  g_value_set_double (&val_double, 8.0);  res =      gst_interpolation_control_source_set (csource, 4 * GST_SECOND,      &val_double);  fail_unless (res, NULL);  g_object_unref (G_OBJECT (csource));  /* now pull in values for some timestamps */  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_double, 0.0);  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_double, 5.0);  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_double, 2.0);  gst_controller_sync_values (ctrl, 3 * GST_SECOND);  fail_unless (GST_TEST_MONO_SOURCE (elem)->val_double > 2.0 &&      GST_TEST_MONO_SOURCE (elem)->val_double < 8.0, NULL);  gst_controller_sync_values (ctrl, 4 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_double, 8.0);  gst_controller_sync_values (ctrl, 5 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_double, 8.0);  GST_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* make sure we don't crash when someone sets an unsupported interpolation * mode */GST_START_TEST (controller_interpolate_unimplemented){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstElement *elem;  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_interpolation_control_source_new ();  fail_unless (csource != NULL);  fail_unless (gst_controller_set_control_source (ctrl, "ulong",          GST_CONTROL_SOURCE (csource)));  /* set completely bogus interpolation mode */  fail_if (gst_interpolation_control_source_set_interpolation_mode (csource,          (GstInterpolateMode) 93871));  g_object_unref (G_OBJECT (csource));  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test _unset() */GST_START_TEST (controller_interpolation_unset){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstElement *elem;  gboolean res;  GValue val_ulong = { 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_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_NONE));  /* 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, 1 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  g_value_set_ulong (&val_ulong, 50);  res =      gst_interpolation_control_source_set (csource, 2 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  /* verify values */  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, 100);;  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 50);;  /* unset second */  res = gst_interpolation_control_source_unset (csource, 1 * GST_SECOND);  fail_unless (res, NULL);  g_object_unref (csource);  /* verify value again */  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_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test _unset_all() */GST_START_TEST (controller_interpolation_unset_all){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstElement *elem;  gboolean res;  GValue val_ulong = { 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_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_NONE));  /* 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, 1 * GST_SECOND,      &val_ulong);  fail_unless (res, NULL);  /* verify values */  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, 100);;  /* unset second */  gst_interpolation_control_source_unset_all (csource);  g_object_unref (csource);  /* verify value again */  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_int (GST_TEST_MONO_SOURCE (elem)->val_ulong, 100);;  GST_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test retrieval of an array of values with get_value_array() */GST_START_TEST (controller_interpolation_linear_value_array){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstElement *elem;  gboolean res;  GValue val_ulong = { 0, };  GstValueArray values = { 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_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 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);  /* now pull in values for some timestamps */  values.property_name = "ulong";  values.nbsamples = 3;  values.sample_interval = GST_SECOND;  values.values = (gpointer) g_new (gulong, 3);  fail_unless (gst_control_source_get_value_array (GST_CONTROL_SOURCE (csource),          0, &values));  fail_unless_equals_int (((gulong *) values.values)[0], 0);  fail_unless_equals_int (((gulong *) values.values)[1], 50);  fail_unless_equals_int (((gulong *) values.values)[2], 100);  g_object_unref (csource);  GST_INFO ("controller->ref_count=%d", G_OBJECT (ctrl)->ref_count);  g_free (values.values);  g_object_unref (ctrl);  gst_object_unref (elem);}GST_END_TEST;/* test if values below minimum and above maximum are clipped */GST_START_TEST (controller_interpolation_linear_invalid_values){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstElement *elem;  gboolean res;  GValue val_float = { 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), "float", 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, "float",          GST_CONTROL_SOURCE (csource)));  /* set interpolation mode */  fail_unless (gst_interpolation_control_source_set_interpolation_mode (csource,          GST_INTERPOLATE_LINEAR));  /* set control values */  g_value_init (&val_float, G_TYPE_FLOAT);  g_value_set_float (&val_float, 200.0);  res =      gst_interpolation_control_source_set (csource, 0 * GST_SECOND,      &val_float);  fail_unless (res, NULL);  g_value_set_float (&val_float, -200.0);  res =      gst_interpolation_control_source_set (csource, 4 * GST_SECOND,      &val_float);  fail_unless (res, NULL);  g_object_unref (csource);  /* now pull in values for some timestamps and see if clipping works */  /* 200.0 */  gst_controller_sync_values (ctrl, 0 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_float, 100.0);  /* 100.0 */  gst_controller_sync_values (ctrl, 1 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_float, 100.0);  /* 50.0 */  gst_controller_sync_values (ctrl, 1 * GST_SECOND + 500 * GST_MSECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_float, 50.0);  /* 0.0 */  gst_controller_sync_values (ctrl, 2 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_float, 0.0);  /* -100.0 */  gst_controller_sync_values (ctrl, 3 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_float, 0.0);  /* -200.0 */  gst_controller_sync_values (ctrl, 4 * GST_SECOND);  fail_unless_equals_float (GST_TEST_MONO_SOURCE (elem)->val_float, 0.0);  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_linear_default_values){  GstController *ctrl;  GstInterpolationControlSource *csource;  GstElement *elem;  gboolean res;  GValue val_ulong = { 0, };  gst_controller_init (NULL, NULL);  elem = gst_element_factory_make ("testmonosource", "test_source");

⌨️ 快捷键说明

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