static void gst_irtsp_parse_class_init (GstIRTSPParseClass * klass) { GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); GST_DEBUG_CATEGORY_INIT (irtsp_parse_debug, "irtspparse", 0, "Interleaved RTSP stream parser"); object_class->finalize = gst_irtsp_parse_finalize; object_class->set_property = gst_irtsp_parse_set_property; object_class->get_property = gst_irtsp_parse_get_property; g_object_class_install_property (object_class, PROP_CHANNEL_ID, g_param_spec_int ("channel-id", "channel-id", "Channel Identifier", 0, 255, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); parse_class->start = GST_DEBUG_FUNCPTR (gst_irtsp_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_irtsp_parse_stop); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_irtsp_parse_handle_frame); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); gst_element_class_set_metadata (element_class, "IRTSPParse", "Raw/Parser", "Parses a raw interleaved RTSP stream", "Mark Nauwelaerts <*****@*****.**>"); }
static void gst_dirac_parse_class_init (GstDiracParseClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *base_parse_class = GST_BASE_PARSE_CLASS (klass); gobject_class->set_property = gst_dirac_parse_set_property; gobject_class->get_property = gst_dirac_parse_get_property; gobject_class->dispose = gst_dirac_parse_dispose; gobject_class->finalize = gst_dirac_parse_finalize; gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&gst_dirac_parse_src_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&gst_dirac_parse_sink_template)); gst_element_class_set_static_metadata (element_class, "Dirac parser", "Codec/Parser/Video", "Parses Dirac streams", "David Schleef <*****@*****.**>"); base_parse_class->start = GST_DEBUG_FUNCPTR (gst_dirac_parse_start); base_parse_class->stop = GST_DEBUG_FUNCPTR (gst_dirac_parse_stop); base_parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_dirac_parse_set_sink_caps); base_parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_dirac_parse_get_sink_caps); base_parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_dirac_parse_handle_frame); base_parse_class->convert = GST_DEBUG_FUNCPTR (gst_dirac_parse_convert); base_parse_class->pre_push_frame = GST_DEBUG_FUNCPTR (gst_dirac_parse_pre_push_frame); }
static gboolean gst_ac3_parse_src_event (GstBaseParse * parse, GstEvent * event) { GstAc3Parse *ac3parse = GST_AC3_PARSE (parse); if (G_UNLIKELY (GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_UPSTREAM) && gst_event_has_name (event, "ac3parse-set-alignment")) { const GstStructure *st = gst_event_get_structure (event); const gchar *align = gst_structure_get_string (st, "alignment"); if (g_str_equal (align, "iec61937")) { GST_DEBUG_OBJECT (ac3parse, "Switching to iec61937 alignment"); g_atomic_int_set (&ac3parse->align, GST_AC3_PARSE_ALIGN_IEC61937); } else if (g_str_equal (align, "frame")) { GST_DEBUG_OBJECT (ac3parse, "Switching to frame alignment"); g_atomic_int_set (&ac3parse->align, GST_AC3_PARSE_ALIGN_FRAME); } else { g_atomic_int_set (&ac3parse->align, GST_AC3_PARSE_ALIGN_FRAME); GST_WARNING_OBJECT (ac3parse, "Got unknown alignment request (%s) " "reverting to frame alignment.", gst_structure_get_string (st, "alignment")); } gst_event_unref (event); return TRUE; } return GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event); }
static void gst_ac3_parse_class_init (GstAc3ParseClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GST_DEBUG_CATEGORY_INIT (ac3_parse_debug, "ac3parse", 0, "AC3 audio stream parser"); object_class->finalize = gst_ac3_parse_finalize; gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); gst_element_class_set_static_metadata (element_class, "AC3 audio stream parser", "Codec/Parser/Converter/Audio", "AC3 parser", "Tim-Philipp Müller <tim centricular net>"); parse_class->start = GST_DEBUG_FUNCPTR (gst_ac3_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_ac3_parse_stop); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_ac3_parse_handle_frame); parse_class->src_event = GST_DEBUG_FUNCPTR (gst_ac3_parse_src_event); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_ac3_parse_get_sink_caps); }
static void gst_mpegv_parse_class_init (GstMpegvParseClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); parent_class = g_type_class_peek_parent (klass); gobject_class->set_property = gst_mpegv_parse_set_property; gobject_class->get_property = gst_mpegv_parse_get_property; g_object_class_install_property (gobject_class, PROP_DROP, g_param_spec_boolean ("drop", "drop", "Drop data untill valid configuration data is received either " "in the stream or through caps", DEFAULT_PROP_DROP, G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_GOP_SPLIT, g_param_spec_boolean ("gop-split", "gop-split", "Split frame when encountering GOP", DEFAULT_PROP_GOP_SPLIT, G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /* Override BaseParse vfuncs */ parse_class->start = GST_DEBUG_FUNCPTR (gst_mpegv_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_mpegv_parse_stop); parse_class->check_valid_frame = GST_DEBUG_FUNCPTR (gst_mpegv_parse_check_valid_frame); parse_class->parse_frame = GST_DEBUG_FUNCPTR (gst_mpegv_parse_parse_frame); parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_mpegv_parse_set_caps); }
/** * gst_amr_parse_class_init: * @klass: GstAmrParseClass. * */ static void gst_amr_parse_class_init (GstAmrParseClass * klass) { GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GST_DEBUG_CATEGORY_INIT (amrparse_debug, "amrparse", 0, "AMR-NB audio stream parser"); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); gst_element_class_set_static_metadata (element_class, "AMR audio stream parser", "Codec/Parser/Audio", "Adaptive Multi-Rate audio parser", "Ronald Bultje <*****@*****.**>"); parse_class->start = GST_DEBUG_FUNCPTR (gst_amr_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_amr_parse_stop); parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_amr_parse_sink_setcaps); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_amr_parse_sink_getcaps); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_amr_parse_handle_frame); }
static void gst_h263_parse_class_init (GstH263ParseClass * klass) { GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GST_DEBUG_CATEGORY_INIT (h263_parse_debug, "h263parse", 0, "h263 parser"); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&srctemplate)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&sinktemplate)); gst_element_class_set_static_metadata (gstelement_class, "H.263 parser", "Codec/Parser/Video", "Parses H.263 streams", "Arun Raghavan <*****@*****.**>," "Edward Hervey <*****@*****.**>"); /* Override BaseParse vfuncs */ parse_class->start = GST_DEBUG_FUNCPTR (gst_h263_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_h263_parse_stop); parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_h263_parse_sink_event); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_h263_parse_handle_frame); parse_class->pre_push_frame = GST_DEBUG_FUNCPTR (gst_h263_parse_pre_push_frame); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_h263_parse_get_sink_caps); }
static gboolean gst_h263_parse_sink_event (GstBaseParse * parse, GstEvent * event) { GstH263Parse *h263parse; h263parse = GST_H263_PARSE (parse); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_TAG: { GstTagList *taglist; gst_event_parse_tag (event, &taglist); if (gst_tag_list_get_uint (taglist, GST_TAG_BITRATE, &h263parse->bitrate)) GST_DEBUG_OBJECT (h263parse, "got bitrate tag: %u", h263parse->bitrate); break; } default: break; } return GST_BASE_PARSE_CLASS (parent_class)->sink_event (parse, event); }
static void test_mpeg_audio_parse_class_init (TestMpegAudioParseClass * klass) { GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); parse_class->start = test_mpeg_audio_parse_start; parse_class->stop = test_mpeg_audio_parse_stop; parse_class->check_valid_frame = test_mpeg_audio_parse_check_valid_frame; parse_class->parse_frame = test_mpeg_audio_parse_parse_frame; }
/** * gst_amrparse_class_init: * @klass: GstAmrParseClass. * */ static void gst_amrparse_class_init (GstAmrParseClass * klass) { GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); parse_class->start = GST_DEBUG_FUNCPTR (gst_amrparse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_amrparse_stop); parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_amrparse_sink_setcaps); parse_class->parse_frame = GST_DEBUG_FUNCPTR (gst_amrparse_parse_frame); parse_class->check_valid_frame = GST_DEBUG_FUNCPTR (gst_amrparse_check_valid_frame); }
static void gst_h263_parse_class_init (GstH263ParseClass * klass) { GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); /* Override BaseParse vfuncs */ parse_class->start = GST_DEBUG_FUNCPTR (gst_h263_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_h263_parse_stop); parse_class->event = GST_DEBUG_FUNCPTR (gst_h263_parse_sink_event); parse_class->check_valid_frame = GST_DEBUG_FUNCPTR (gst_h263_parse_check_valid_frame); parse_class->parse_frame = GST_DEBUG_FUNCPTR (gst_h263_parse_parse_frame); }
static gboolean gst_raw_video_parse_stop (GstBaseParse * parse) { GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (parse); /* Sink caps config is not ready until caps come in. * We are stopping processing, the element is being reset, * so the config has to be un-readied. * (Since the properties config is not depending on caps, * its ready status is always TRUE.) */ raw_video_parse->sink_caps_config.ready = FALSE; return GST_BASE_PARSE_CLASS (parent_class)->stop (parse); }
static void gst_mpegv_parse_class_init (GstMpegvParseClass * klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GST_DEBUG_CATEGORY_INIT (mpegv_parse_debug, "mpegvideoparse", 0, "MPEG-1/2 video parser"); parent_class = g_type_class_peek_parent (klass); gobject_class->set_property = gst_mpegv_parse_set_property; gobject_class->get_property = gst_mpegv_parse_get_property; g_object_class_install_property (gobject_class, PROP_DROP, g_param_spec_boolean ("drop", "drop", "Drop data untill valid configuration data is received either " "in the stream or through caps", DEFAULT_PROP_DROP, G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_GOP_SPLIT, g_param_spec_boolean ("gop-split", "gop-split", "Split frame when encountering GOP", DEFAULT_PROP_GOP_SPLIT, G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); gst_element_class_set_static_metadata (element_class, "MPEG video elementary stream parser", "Codec/Parser/Video", "Parses and frames MPEG-1 and MPEG-2 elementary video streams", "Wim Taymans <*****@*****.**>, " "Jan Schmidt <*****@*****.**>, " "Mark Nauwelaerts <*****@*****.**>"); /* Override BaseParse vfuncs */ parse_class->start = GST_DEBUG_FUNCPTR (gst_mpegv_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_mpegv_parse_stop); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_mpegv_parse_handle_frame); parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_mpegv_parse_set_caps); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_mpegv_parse_get_caps); parse_class->pre_push_frame = GST_DEBUG_FUNCPTR (gst_mpegv_parse_pre_push_frame); parse_class->sink_query = GST_DEBUG_FUNCPTR (gst_mpegv_parse_sink_query); }
static void test_mpeg_audio_parse_class_init (TestMpegAudioParseClass * klass) { GstElementClass *element_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); gst_element_class_add_static_pad_template (element_class, &sink_template); gst_element_class_add_static_pad_template (element_class, &src_template); gst_element_class_set_metadata (element_class, "MPEG1 Audio Parser", "Codec/Parser/Audio", "Pretends to parse mpeg1 audio stream", "Foo Bar <*****@*****.**>"); parse_class->start = test_mpeg_audio_parse_start; parse_class->stop = test_mpeg_audio_parse_stop; parse_class->handle_frame = test_mpeg_audio_parse_handle_frame; }
static gboolean gst_png_parse_event (GstBaseParse * parse, GstEvent * event) { gboolean res; res = GST_BASE_PARSE_CLASS (parent_class)->sink_event (parse, event); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_STOP: /* the start code and at least 2 empty frames (IHDR and IEND) */ gst_base_parse_set_min_frame_size (parse, 8 + 12 + 12); break; default: break; } return res; }
static void gst_ac3_parse_class_init (GstAc3ParseClass * klass) { GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); GST_DEBUG_CATEGORY_INIT (ac3_parse_debug, "ac3parse", 0, "AC3 audio stream parser"); object_class->finalize = gst_ac3_parse_finalize; parse_class->start = GST_DEBUG_FUNCPTR (gst_ac3_parse_start); parse_class->stop = GST_DEBUG_FUNCPTR (gst_ac3_parse_stop); parse_class->check_valid_frame = GST_DEBUG_FUNCPTR (gst_ac3_parse_check_valid_frame); parse_class->parse_frame = GST_DEBUG_FUNCPTR (gst_ac3_parse_parse_frame); parse_class->src_event = GST_DEBUG_FUNCPTR (gst_ac3_parse_src_event); parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_ac3_parse_get_sink_caps); }
static gboolean gst_mpegv_parse_sink_query (GstBaseParse * parse, GstQuery * query) { gboolean res; GstMpegvParse *mpvparse = GST_MPEGVIDEO_PARSE (parse); res = GST_BASE_PARSE_CLASS (parent_class)->sink_query (parse, query); if (res && GST_QUERY_TYPE (query) == GST_QUERY_ALLOCATION) { mpvparse->send_mpeg_meta = gst_query_find_allocation_meta (query, GST_MPEG_VIDEO_META_API_TYPE, NULL); GST_DEBUG_OBJECT (parse, "Downstream can handle GstMpegVideo GstMeta : %d", mpvparse->send_mpeg_meta); } return res; }
static void gst_png_parse_class_init (GstPngParseClass * klass) { GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); GST_DEBUG_CATEGORY_INIT (png_parse_debug, "pngparse", 0, "png parser"); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&srctemplate)); gst_element_class_add_pad_template (gstelement_class, gst_static_pad_template_get (&sinktemplate)); gst_element_class_set_static_metadata (gstelement_class, "PNG parser", "Codec/Parser/Video/Image", "Parses PNG files", "Olivier Crete <*****@*****.**>"); /* Override BaseParse vfuncs */ parse_class->start = GST_DEBUG_FUNCPTR (gst_png_parse_start); parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_png_parse_handle_frame); }
static void gst_raw_base_parse_class_init (GstRawBaseParseClass * klass) { GObjectClass *object_class; GstBaseParseClass *baseparse_class; GST_DEBUG_CATEGORY_INIT (raw_base_parse_debug, "rawbaseparse", 0, "raw base parse class"); object_class = G_OBJECT_CLASS (klass); baseparse_class = GST_BASE_PARSE_CLASS (klass); object_class->finalize = GST_DEBUG_FUNCPTR (gst_raw_base_parse_finalize); object_class->set_property = GST_DEBUG_FUNCPTR (gst_raw_base_parse_set_property); object_class->get_property = GST_DEBUG_FUNCPTR (gst_raw_base_parse_get_property); baseparse_class->start = GST_DEBUG_FUNCPTR (gst_raw_base_parse_start); baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_raw_base_parse_stop); baseparse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_raw_base_parse_set_sink_caps); baseparse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_raw_base_parse_handle_frame); baseparse_class->convert = GST_DEBUG_FUNCPTR (gst_raw_base_parse_convert); /** * GstRawBaseParse::use-sink-caps: * * Use sink caps configuration. If set to false, the parser * will use the properties configuration instead. It is possible * to switch between these during playback. */ g_object_class_install_property (object_class, PROP_USE_SINK_CAPS, g_param_spec_boolean ("use-sink-caps", "Use sink caps", "Use the sink caps for defining the output format", DEFAULT_USE_SINK_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); }
static void gst_raw_audio_parse_class_init (GstRawAudioParseClass * klass) { GObjectClass *object_class; GstElementClass *element_class; GstBaseParseClass *baseparse_class; GstRawBaseParseClass *rawbaseparse_class; GST_DEBUG_CATEGORY_INIT (raw_audio_parse_debug, "rawaudioparse", 0, "rawaudioparse element"); object_class = G_OBJECT_CLASS (klass); element_class = GST_ELEMENT_CLASS (klass); baseparse_class = GST_BASE_PARSE_CLASS (klass); rawbaseparse_class = GST_RAW_BASE_PARSE_CLASS (klass); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&static_sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&static_src_template)); object_class->set_property = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_set_property); object_class->get_property = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_property); baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_stop); rawbaseparse_class->set_current_config = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_set_current_config); rawbaseparse_class->get_current_config = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_current_config); rawbaseparse_class->set_config_from_caps = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_set_config_from_caps); rawbaseparse_class->get_caps_from_config = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_caps_from_config); rawbaseparse_class->get_config_frame_size = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_config_frame_size); rawbaseparse_class->is_config_ready = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_is_config_ready); rawbaseparse_class->process = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_process); rawbaseparse_class->is_unit_format_supported = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_is_unit_format_supported); rawbaseparse_class->get_units_per_second = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_units_per_second); g_object_class_install_property (object_class, PROP_FORMAT, g_param_spec_enum ("format", "Format", "Format of the raw audio stream", gst_raw_audio_parse_format_get_type (), GST_RAW_AUDIO_PARSE_FORMAT_PCM, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_PCM_FORMAT, g_param_spec_enum ("pcm-format", "PCM format", "Format of audio samples in PCM stream (ignored if format property is not set to pcm)", GST_TYPE_AUDIO_FORMAT, GST_RAW_AUDIO_PARSE_FORMAT_PCM, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_SAMPLE_RATE, g_param_spec_int ("sample-rate", "Sample rate", "Rate of audio samples in raw stream", 1, INT_MAX, DEFAULT_SAMPLE_RATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_NUM_CHANNELS, g_param_spec_int ("num-channels", "Number of channels", "Number of channels in raw stream", 1, INT_MAX, DEFAULT_NUM_CHANNELS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_INTERLEAVED, g_param_spec_boolean ("interleaved", "Interleaved layout", "True if audio has interleaved layout", DEFAULT_INTERLEAVED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_CHANNEL_POSITIONS, g_param_spec_value_array ("channel-positions", "Channel positions", "Channel positions used on the output", g_param_spec_enum ("channel-position", "Channel position", "Channel position of the n-th input", GST_TYPE_AUDIO_CHANNEL_POSITION, GST_AUDIO_CHANNEL_POSITION_NONE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); gst_element_class_set_static_metadata (element_class, "rawaudioparse", "Codec/Parser/Audio", "Converts unformatted data streams into timestamped raw audio frames", "Carlos Rafael Giani <*****@*****.**>"); }
static void gst_raw_video_parse_class_init (GstRawVideoParseClass * klass) { GObjectClass *object_class; GstElementClass *element_class; GstBaseParseClass *baseparse_class; GstRawBaseParseClass *rawbaseparse_class; GST_DEBUG_CATEGORY_INIT (raw_video_parse_debug, "rawvideoparse", 0, "rawvideoparse element"); object_class = G_OBJECT_CLASS (klass); element_class = GST_ELEMENT_CLASS (klass); baseparse_class = GST_BASE_PARSE_CLASS (klass); rawbaseparse_class = GST_RAW_BASE_PARSE_CLASS (klass); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&static_sink_template)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&static_src_template)); object_class->set_property = GST_DEBUG_FUNCPTR (gst_raw_video_parse_set_property); object_class->get_property = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_property); baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_raw_video_parse_stop); rawbaseparse_class->set_current_config = GST_DEBUG_FUNCPTR (gst_raw_video_parse_set_current_config); rawbaseparse_class->get_current_config = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_current_config); rawbaseparse_class->set_config_from_caps = GST_DEBUG_FUNCPTR (gst_raw_video_parse_set_config_from_caps); rawbaseparse_class->get_caps_from_config = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_caps_from_config); rawbaseparse_class->get_config_frame_size = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_config_frame_size); rawbaseparse_class->get_max_frames_per_buffer = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_max_frames_per_buffer); rawbaseparse_class->is_config_ready = GST_DEBUG_FUNCPTR (gst_raw_video_parse_is_config_ready); rawbaseparse_class->process = GST_DEBUG_FUNCPTR (gst_raw_video_parse_process); rawbaseparse_class->is_unit_format_supported = GST_DEBUG_FUNCPTR (gst_raw_video_parse_is_unit_format_supported); rawbaseparse_class->get_units_per_second = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_units_per_second); rawbaseparse_class->get_overhead_size = GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_overhead_size); g_object_class_install_property (object_class, PROP_WIDTH, g_param_spec_int ("width", "Width", "Width of frames in raw stream", 0, G_MAXINT, DEFAULT_WIDTH, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_HEIGHT, g_param_spec_int ("height", "Height", "Height of frames in raw stream", 0, G_MAXINT, DEFAULT_HEIGHT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_FORMAT, g_param_spec_enum ("format", "Format", "Format of frames in raw stream", GST_TYPE_VIDEO_FORMAT, DEFAULT_FORMAT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_FRAMERATE, gst_param_spec_fraction ("framerate", "Frame rate", "Rate of frames in raw stream", 0, 1, G_MAXINT, 1, DEFAULT_FRAMERATE_N, DEFAULT_FRAMERATE_D, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_PIXEL_ASPECT_RATIO, gst_param_spec_fraction ("pixel-aspect-ratio", "Pixel aspect ratio", "Pixel aspect ratio of frames in raw stream", 1, 100, 100, 1, DEFAULT_PIXEL_ASPECT_RATIO_N, DEFAULT_PIXEL_ASPECT_RATIO_D, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_INTERLACED, g_param_spec_boolean ("interlaced", "Interlaced flag", "True if frames in raw stream are interlaced", DEFAULT_INTERLACED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_TOP_FIELD_FIRST, g_param_spec_boolean ("top-field-first", "Top field first", "True if top field in frames in raw stream come first (not used if frames aren't interlaced)", DEFAULT_INTERLACED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_PLANE_STRIDES, g_param_spec_value_array ("plane-strides", "Plane strides", "Strides of the planets in bytes", g_param_spec_uint ("plane-stride", "Plane stride", "Stride of the n-th plane in bytes (0 = stride equals width*bytes-per-pixel)", 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_PLANE_OFFSETS, g_param_spec_value_array ("plane-offsets", "Plane offsets", "Offsets of the planets in bytes", g_param_spec_uint ("plane-offset", "Plane offset", "Offset of the n-th plane in bytes", 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS), G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); g_object_class_install_property (object_class, PROP_FRAME_STRIDE, g_param_spec_uint ("frame-stride", "Frame stride", "Stride between whole frames (0 = frames are tightly packed together)", 0, G_MAXUINT, DEFAULT_FRAME_STRIDE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS) ); gst_element_class_set_static_metadata (element_class, "rawvideoparse", "Codec/Parser/Video", "Converts unformatted data streams into timestamped raw video frames", "Carlos Rafael Giani <*****@*****.**>"); }