static void type_class_init (gpointer g_class, gpointer class_data) { GObjectClass *gobject_class; GstBaseSrcClass *gst_base_src_class; GstOmxBaseSrcClass *omx_base_class; gobject_class = G_OBJECT_CLASS (g_class); gst_base_src_class = GST_BASE_SRC_CLASS (g_class); omx_base_class = GST_OMX_BASE_SRC_CLASS (g_class); gobject_class->finalize = finalize; gst_base_src_class->start = start; gst_base_src_class->stop = stop; gst_base_src_class->event = handle_event; gst_base_src_class->create = create; /* Properties stuff */ { gobject_class->set_property = set_property; gobject_class->get_property = get_property; g_object_class_install_property (gobject_class, ARG_COMPONENT_ROLE, g_param_spec_string ("component-role", "Component role", "Role of the OpenMAX IL component", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_COMPONENT_NAME, g_param_spec_string ("component-name", "Component name", "Name of the OpenMAX IL component to use", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_LIBRARY_NAME, g_param_spec_string ("library-name", "Library name", "Name of the OpenMAX IL implementation library to use", NULL, G_PARAM_READWRITE)); /* note: the default values for these are just a guess.. since we wouldn't know * until the OMX component is constructed. But that is ok, these properties are * only for debugging */ g_object_class_install_property (gobject_class, ARG_NUM_OUTPUT_BUFFERS, g_param_spec_uint ("output-buffers", "Output buffers", "The number of OMX output buffers", 1, 10, 4, G_PARAM_READWRITE)); } omx_base_class->out_port_index = 0; }
static void type_instance_init (GTypeInstance *instance, gpointer g_class) { GstOmxBaseSrc *self; GstOmxBaseSrcClass *klass; self = GST_OMX_BASE_SRC (instance); klass = GST_OMX_BASE_SRC_CLASS (g_class); GST_LOG_OBJECT (self, "begin"); /* GOmx */ self->gomx = g_omx_core_new (self, g_class); self->gomx->use_timestamps = FALSE; self->out_port = g_omx_core_get_port (self->gomx, "out", klass->out_port_index); self->out_port->buffer_alloc = buffer_alloc; GST_LOG_OBJECT (self, "end"); }
static void type_base_init (gpointer g_class) { GstElementClass *element_class; GstOmxBaseSrcClass *omx_base_class; omx_base_class = GST_OMX_BASE_SRC_CLASS (g_class); element_class = GST_ELEMENT_CLASS (g_class); { GstElementDetails details; details.longname = "OpenMAX IL filereader src element"; details.klass = "None"; details.description = "Does nothing"; details.author = "Felipe Contreras"; gst_element_class_set_details (element_class, &details); } { GstPadTemplate *template;
static void gst_omx_camera_class_init (GstOmxCameraClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstBaseSrcClass *base_src_class = GST_BASE_SRC_CLASS (klass); GstOmxBaseSrcClass *baseomxsrc_class = GST_OMX_BASE_SRC_CLASS (klass); gobject_class->set_property = gst_omx_camera_set_property; gobject_class->get_property = gst_omx_camera_get_property; g_object_class_install_property (gobject_class, PROP_INTERFACE, g_param_spec_enum ("interface", "Interface", "The video input interface from where image/video is obtained", GST_OMX_CAMERA_INTERFACE_TYPE, PROP_INTERFACE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CAPT_MODE, g_param_spec_enum ("capt-mode", "Capture mode", "The video input multiplexed mode", GST_OMX_CAMERA_CAPT_MODE_TYPE, PROP_CAPT_MODE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_VIP_MODE, g_param_spec_enum ("vip-mode", "VIP mode", "VIP port split configuration", GST_OMX_CAMERA_VIP_MODE_TYPE, PROP_VIP_MODE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_SCAN_TYPE, g_param_spec_enum ("scan-type", "Scan Type", "Video scan type", GST_OMX_CAMERA_SCAN_TYPE, PROP_SCAN_TYPE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_SKIP_FRAMES, g_param_spec_uint ("skip-frames", "Skip Frames", "Skip this amount of frames after a vaild frame", 0, 30, PROP_SKIP_FRAMES_DEFAULT, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_FIELD_MERGED, g_param_spec_boolean ("field-merged", "Field Merge", "Allow interlaced video fields to be merged in a single progressive frame", PROP_FIELD_MERGED_DEFAULT, G_PARAM_READWRITE)); gst_element_class_set_details_simple (element_class, "OpenMAX Video Source", "Source/Video", "Reads frames from a camera device", "Jose Jimenez <*****@*****.**>"); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); baseomxsrc_class->parse_caps = GST_DEBUG_FUNCPTR (gst_omx_camera_set_caps); baseomxsrc_class->init_ports = GST_DEBUG_FUNCPTR (gst_omx_camera_init_pads); base_src_class->fixate = GST_DEBUG_FUNCPTR (gst_omx_camera_fixate); baseomxsrc_class->handle_name = "OMX.TI.VPSSM3.VFCC"; baseomxsrc_class->omx_create = gst_omx_camera_create; GST_DEBUG_CATEGORY_INIT (gst_omx_camera_debug, "omxcamera", 0, "OMX video source element"); }