static void gst_aravis_init (GstAravis *gst_aravis, GstAravisClass *g_class) { GstPad *pad = GST_BASE_SRC_PAD (gst_aravis); gst_pad_set_fixatecaps_function (pad, gst_aravis_fixate_caps); gst_base_src_set_live (GST_BASE_SRC (gst_aravis), TRUE); gst_base_src_set_format (GST_BASE_SRC (gst_aravis), GST_FORMAT_TIME); gst_aravis->camera_name = NULL; gst_aravis->gain = -1; gst_aravis->gain_auto = FALSE; gst_aravis->exposure_time_us = -1; gst_aravis->exposure_auto = FALSE; gst_aravis->offset_x = 0; gst_aravis->offset_y = 0; gst_aravis->h_binning = -1; gst_aravis->v_binning = -1; gst_aravis->packet_resend = TRUE; gst_aravis->payload = 0; gst_aravis->buffer_timeout_us = GST_ARAVIS_BUFFER_TIMEOUT_DEFAULT; gst_aravis->camera = NULL; gst_aravis->stream = NULL; gst_aravis->all_caps = NULL; gst_aravis->fixed_caps = NULL; }
static void gst_audio_test_src_init (GstAudioTestSrc * src, GstAudioTestSrcClass * g_class) { GstPad *pad = GST_BASE_SRC_PAD (src); gst_pad_set_fixatecaps_function (pad, gst_audio_test_src_src_fixate); src->samplerate = 44100; src->format = GST_AUDIO_TEST_SRC_FORMAT_NONE; src->volume = DEFAULT_VOLUME; src->freq = DEFAULT_FREQ; /* we operate in time */ gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME); gst_base_src_set_live (GST_BASE_SRC (src), DEFAULT_IS_LIVE); src->samples_per_buffer = DEFAULT_SAMPLES_PER_BUFFER; src->generate_samples_per_buffer = src->samples_per_buffer; src->timestamp_offset = DEFAULT_TIMESTAMP_OFFSET; src->can_activate_pull = DEFAULT_CAN_ACTIVATE_PULL; src->gen = NULL; src->wave = DEFAULT_WAVE; gst_base_src_set_blocksize (GST_BASE_SRC (src), -1); }
static void gst_auto_convert_dispose (GObject * object) { GstAutoConvert *autoconvert = GST_AUTO_CONVERT (object); gst_pad_set_fixatecaps_function (autoconvert->sinkpad, NULL); GST_AUTOCONVERT_LOCK (autoconvert); if (autoconvert->current_subelement) { gst_object_unref (autoconvert->current_subelement); autoconvert->current_subelement = NULL; autoconvert->current_internal_sinkpad = NULL; autoconvert->current_internal_srcpad = NULL; } g_list_foreach (autoconvert->cached_events, (GFunc) gst_mini_object_unref, NULL); g_list_free (autoconvert->cached_events); autoconvert->cached_events = NULL; if (autoconvert->factories) { gst_plugin_feature_list_free (autoconvert->factories); autoconvert->factories = NULL; } GST_AUTOCONVERT_UNLOCK (autoconvert); G_OBJECT_CLASS (parent_class)->dispose (object); }
static void gst_proxy_pad_init (GstProxyPad * ppad) { GstPad *pad = (GstPad *) ppad; GST_PROXY_PAD_PRIVATE (ppad) = G_TYPE_INSTANCE_GET_PRIVATE (ppad, GST_TYPE_PROXY_PAD, GstProxyPadPrivate); GST_PROXY_GET_LOCK (pad) = g_mutex_new (); gst_pad_set_query_type_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_query_type)); gst_pad_set_event_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_event)); gst_pad_set_query_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_query)); gst_pad_set_internal_link_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_internal_link)); gst_pad_set_iterate_internal_links_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_iterate_internal_links)); gst_pad_set_getcaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_getcaps)); gst_pad_set_acceptcaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_acceptcaps)); gst_pad_set_fixatecaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_fixatecaps)); gst_pad_set_setcaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_setcaps)); }
static void gst_video_test_src_init (GstVideoTestSrc * src, GstVideoTestSrcClass * g_class) { GstPad *pad = GST_BASE_SRC_PAD (src); gst_pad_set_fixatecaps_function (pad, gst_video_test_src_src_fixate); gst_video_test_src_set_pattern (src, GST_VIDEO_TEST_SRC_SMPTE); src->timestamp_offset = 0; /* we operate in time */ gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME); gst_base_src_set_live (GST_BASE_SRC (src), FALSE); }
static void gst_video_test_src_init (GstVideoTestSrc * src, GstVideoTestSrcClass * g_class) { GstPad *pad = GST_BASE_SRC_PAD (src); gst_pad_set_fixatecaps_function (pad, gst_video_test_src_src_fixate); gst_video_test_src_set_pattern (src, DEFAULT_PATTERN); src->timestamp_offset = DEFAULT_TIMESTAMP_OFFSET; /* we operate in time */ gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME); gst_base_src_set_live (GST_BASE_SRC (src), DEFAULT_IS_LIVE); src->peer_alloc = DEFAULT_PEER_ALLOC; }
static void gst_dc1394_init (GstDc1394 * src, GstDc1394Class * g_class) { src->segment_start_frame = -1; src->segment_end_frame = -1; src->timestamp_offset = 0; src->caps = gst_dc1394_get_all_dc1394_caps (); src->bufsize = 10; src->iso_speed = 400; src->camnum = 0; src->n_frames = 0; gst_pad_set_fixatecaps_function (GST_BASE_SRC_PAD (src), gst_dc1394_src_fixate); gst_base_src_set_live (GST_BASE_SRC (src), TRUE); }
GstPad * gst_vf_src_pad_new (GstStaticPadTemplate * pad_template, const char *name) { GST_DEBUG_CATEGORY_INIT (droidvfsrc_debug, "droidvfsrc", 0, "Android camera viewfinder source pad"); GstPad *pad = gst_pad_new_from_static_template (pad_template, name); gst_pad_set_activatepush_function (pad, gst_droid_cam_src_vfsrc_activatepush); gst_pad_set_setcaps_function (pad, gst_droid_cam_src_vfsrc_setcaps); gst_pad_set_getcaps_function (pad, gst_droid_cam_src_vfsrc_getcaps); gst_pad_set_query_type_function (pad, gst_droid_cam_src_vfsrc_query_type); gst_pad_set_query_function (pad, gst_droid_cam_src_vfsrc_query); gst_pad_set_fixatecaps_function (pad, gst_droid_cam_src_vfsrc_fixatecaps); /* TODO: Do we need an event handler via gst_pad_set_event_function() ? */ return pad; }
static void gst_aasink_init (GstAASink * aasink) { GstPad *pad; pad = GST_BASE_SINK_PAD (aasink); gst_pad_set_fixatecaps_function (pad, gst_aasink_fixate); memcpy (&aasink->ascii_surf, &aa_defparams, sizeof (struct aa_hardware_params)); aasink->ascii_parms.bright = 0; aasink->ascii_parms.contrast = 16; aasink->ascii_parms.gamma = 1.0; aasink->ascii_parms.dither = 0; aasink->ascii_parms.inversion = 0; aasink->ascii_parms.randomval = 0; aasink->aa_driver = 0; aasink->width = -1; aasink->height = -1; }
static void gst_gdiscreencapsrc_init (GstGDIScreenCapSrc * src, GstGDIScreenCapSrcClass * klass) { /* Set src element inital values... */ GstPad *src_pad = GST_BASE_SRC_PAD (src); gst_pad_set_fixatecaps_function (src_pad, gst_gdiscreencapsrc_fixate); src->frames = 0; src->dibMem = NULL; src->hBitmap = (HBITMAP) INVALID_HANDLE_VALUE; src->memDC = (HDC) INVALID_HANDLE_VALUE; src->capture_x = 0; src->capture_y = 0; src->capture_w = 0; src->capture_h = 0; src->monitor = 0; src->show_cursor = FALSE; gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME); gst_base_src_set_live (GST_BASE_SRC (src), TRUE); }
static void gst_proxy_pad_init (GstProxyPad * ppad) { GstPad *pad = (GstPad *) ppad; ppad->proxy_lock = g_mutex_new (); gst_pad_set_query_type_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_query_type)); gst_pad_set_event_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_event)); gst_pad_set_query_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_query)); gst_pad_set_internal_link_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_internal_link)); gst_pad_set_getcaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_getcaps)); gst_pad_set_acceptcaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_acceptcaps)); gst_pad_set_fixatecaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_fixatecaps)); gst_pad_set_setcaps_function (pad, GST_DEBUG_FUNCPTR (gst_proxy_pad_do_setcaps)); }
static void gst_decklink_src_init (GstDecklinkSrc * decklinksrc, GstDecklinkSrcClass * decklinksrc_class) { g_static_rec_mutex_init (&decklinksrc->task_mutex); decklinksrc->task = gst_task_create (gst_decklink_src_task, decklinksrc); gst_task_set_lock (decklinksrc->task, &decklinksrc->task_mutex); decklinksrc->audiosrcpad = gst_pad_new_from_static_template (&gst_decklink_src_audio_src_template, "audiosrc"); gst_pad_set_getcaps_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_getcaps)); gst_pad_set_setcaps_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_setcaps)); gst_pad_set_acceptcaps_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_acceptcaps)); gst_pad_set_fixatecaps_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_fixatecaps)); gst_pad_set_activate_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_activate)); gst_pad_set_activatepush_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_activatepush)); gst_pad_set_activatepull_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_activatepull)); gst_pad_set_link_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_link)); gst_pad_set_getrange_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_getrange)); gst_pad_set_event_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_event)); gst_pad_set_query_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_query)); gst_pad_set_iterate_internal_links_function (decklinksrc->audiosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_audio_src_iterintlink)); gst_element_add_pad (GST_ELEMENT (decklinksrc), decklinksrc->audiosrcpad); decklinksrc->videosrcpad = gst_pad_new_from_template (gst_element_class_get_pad_template (GST_ELEMENT_CLASS (decklinksrc_class), "videosrc"), "videosrc"); gst_pad_set_getcaps_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_getcaps)); gst_pad_set_setcaps_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_setcaps)); gst_pad_set_acceptcaps_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_acceptcaps)); gst_pad_set_fixatecaps_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_fixatecaps)); gst_pad_set_activate_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_activate)); gst_pad_set_activatepush_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_activatepush)); gst_pad_set_activatepull_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_activatepull)); gst_pad_set_link_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_link)); gst_pad_set_getrange_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_getrange)); gst_pad_set_event_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_event)); gst_pad_set_query_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_query)); gst_pad_set_iterate_internal_links_function (decklinksrc->videosrcpad, GST_DEBUG_FUNCPTR (gst_decklink_src_video_src_iterintlink)); gst_element_add_pad (GST_ELEMENT (decklinksrc), decklinksrc->videosrcpad); decklinksrc->cond = g_cond_new (); decklinksrc->mutex = g_mutex_new (); decklinksrc->copy_data = TRUE; decklinksrc->mode = GST_DECKLINK_MODE_NTSC; decklinksrc->connection = GST_DECKLINK_CONNECTION_SDI; decklinksrc->audio_connection = GST_DECKLINK_AUDIO_CONNECTION_AUTO; decklinksrc->subdevice = 0; decklinksrc->stop = FALSE; decklinksrc->dropped_frames = 0; decklinksrc->dropped_frames_old = 0; decklinksrc->frame_num = -1; /* -1 so will be 0 after incrementing */ #ifdef _MSC_VER decklinksrc->com_init_lock = g_mutex_new(); decklinksrc->com_deinit_lock = g_mutex_new(); decklinksrc->com_initialized = g_cond_new(); decklinksrc->com_uninitialize = g_cond_new(); decklinksrc->com_uninitialized = g_cond_new(); g_mutex_lock (decklinksrc->com_init_lock); /* create the COM initialization thread */ g_thread_create ((GThreadFunc)gst_decklink_src_com_thread, decklinksrc, FALSE, NULL); /* wait until the COM thread signals that COM has been initialized */ g_cond_wait (decklinksrc->com_initialized, decklinksrc->com_init_lock); g_mutex_unlock (decklinksrc->com_init_lock); #endif /* _MSC_VER */ }
static GstElement * gst_auto_convert_add_element (GstAutoConvert * autoconvert, GstElementFactory * factory) { GstElement *element = NULL; GstPad *internal_sinkpad = NULL; GstPad *internal_srcpad = NULL; GstPad *sinkpad; GstPad *srcpad; GstPadLinkReturn padlinkret; GST_DEBUG_OBJECT (autoconvert, "Adding element %s to the autoconvert bin", gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory))); element = gst_element_factory_create (factory, NULL); if (!element) return NULL; if (!gst_bin_add (GST_BIN (autoconvert), element)) { GST_ERROR_OBJECT (autoconvert, "Could not add element %s to the bin", GST_OBJECT_NAME (element)); gst_object_unref (element); return NULL; } srcpad = get_pad_by_direction (element, GST_PAD_SRC); if (!srcpad) { GST_ERROR_OBJECT (autoconvert, "Could not find source in %s", GST_OBJECT_NAME (element)); goto error; } sinkpad = get_pad_by_direction (element, GST_PAD_SINK); if (!sinkpad) { GST_ERROR_OBJECT (autoconvert, "Could not find sink in %s", GST_OBJECT_NAME (element)); goto error; } internal_sinkpad = gst_pad_new_from_static_template (&sink_internal_template, "sink_internal"); internal_srcpad = gst_pad_new_from_static_template (&src_internal_template, "src_internal"); if (!internal_sinkpad || !internal_srcpad) { GST_ERROR_OBJECT (autoconvert, "Could not create internal pads"); goto error; } g_object_weak_ref (G_OBJECT (element), (GWeakNotify) gst_object_unref, internal_sinkpad); g_object_weak_ref (G_OBJECT (element), (GWeakNotify) gst_object_unref, internal_srcpad); gst_pad_set_active (internal_sinkpad, TRUE); gst_pad_set_active (internal_srcpad, TRUE); g_object_set_qdata (G_OBJECT (internal_srcpad), parent_quark, autoconvert); g_object_set_qdata (G_OBJECT (internal_sinkpad), parent_quark, autoconvert); gst_pad_set_chain_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_chain)); gst_pad_set_event_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_event)); gst_pad_set_query_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_query)); gst_pad_set_query_type_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_query_type)); gst_pad_set_getcaps_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_getcaps)); gst_pad_set_bufferalloc_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_buffer_alloc)); gst_pad_set_fixatecaps_function (internal_sinkpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_sink_fixatecaps)); gst_pad_set_event_function (internal_srcpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_src_event)); gst_pad_set_query_function (internal_srcpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_src_query)); gst_pad_set_query_type_function (internal_srcpad, GST_DEBUG_FUNCPTR (gst_auto_convert_internal_src_query_type)); padlinkret = gst_pad_link (internal_srcpad, sinkpad); if (GST_PAD_LINK_FAILED (padlinkret)) { GST_WARNING_OBJECT (autoconvert, "Could not links pad %s:%s to %s:%s" " for reason %d", GST_DEBUG_PAD_NAME (internal_srcpad), GST_DEBUG_PAD_NAME (sinkpad), padlinkret); goto error; } padlinkret = gst_pad_link (srcpad, internal_sinkpad); if (GST_PAD_LINK_FAILED (padlinkret)) { GST_WARNING_OBJECT (autoconvert, "Could not links pad %s:%s to %s:%s" " for reason %d", GST_DEBUG_PAD_NAME (internal_srcpad), GST_DEBUG_PAD_NAME (sinkpad), padlinkret); goto error; } g_object_set_qdata (G_OBJECT (element), internal_srcpad_quark, internal_srcpad); g_object_set_qdata (G_OBJECT (element), internal_sinkpad_quark, internal_sinkpad); /* Iffy */ gst_element_sync_state_with_parent (element); /* Increment the reference count we will return to the caller */ gst_object_ref (element); return element; error: gst_bin_remove (GST_BIN (autoconvert), element); return NULL; }