static void gst_audio_parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstAudioParse *ap = GST_AUDIO_PARSE (object); switch (prop_id) { case PROP_FORMAT: g_value_set_enum (value, ap->format); break; case PROP_RAW_FORMAT: g_value_set_enum (value, ap->raw_format); break; case PROP_RATE:{ gint fps_n, fps_d; gst_raw_parse_get_fps (GST_RAW_PARSE (ap), &fps_n, &fps_d); g_value_set_int (value, fps_n); break; } case PROP_CHANNELS: g_value_set_int (value, ap->channels); break; case PROP_INTERLEAVED: g_value_set_boolean (value, ap->interleaved); break; case PROP_CHANNEL_POSITIONS: g_value_set_boxed (value, ap->channel_positions); break; case PROP_USE_SINK_CAPS: g_value_set_boolean (value, ap->use_sink_caps); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void gst_video_parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstVideoParse *vp = GST_VIDEO_PARSE (object); switch (prop_id) { case PROP_FORMAT: g_value_set_enum (value, vp->format); break; case PROP_WIDTH: g_value_set_int (value, vp->width); break; case PROP_HEIGHT: g_value_set_int (value, vp->height); break; case PROP_FRAMERATE:{ gint fps_n, fps_d; gst_raw_parse_get_fps (GST_RAW_PARSE (vp), &fps_n, &fps_d); gst_value_set_fraction (value, fps_n, fps_d); break; } case PROP_PAR: gst_value_set_fraction (value, vp->par_n, vp->par_d); break; case PROP_INTERLACED: g_value_set_boolean (value, vp->interlaced); break; case PROP_TOP_FIELD_FIRST: g_value_set_boolean (value, vp->top_field_first); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static GstCaps * gst_video_parse_get_caps (GstRawParse * rp) { GstVideoParse *vp = GST_VIDEO_PARSE (rp); GstVideoInfo info; GstCaps *caps; gint fps_n, fps_d; gst_raw_parse_get_fps (rp, &fps_n, &fps_d); gst_video_info_init (&info); gst_video_info_set_format (&info, vp->format, vp->width, vp->height); info.fps_n = fps_n; info.fps_d = fps_d; info.par_n = vp->par_n; info.par_d = vp->par_d; info.interlace_mode = vp->interlaced ? GST_VIDEO_INTERLACE_MODE_INTERLEAVED : GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; caps = gst_video_info_to_caps (&info); return caps; }
static GstCaps * gst_audio_parse_get_caps (GstRawParse * rp) { GstAudioParse *ap = GST_AUDIO_PARSE (rp); GstCaps *caps, *ncaps; GstAudioInfo info; gint fps_n, fps_d; const GValue *val; if (ap->use_sink_caps) { gint rate; GstCaps *caps = gst_pad_get_current_caps (rp->sinkpad); gst_audio_info_from_caps (&info, caps); rate = GST_AUDIO_INFO_RATE (&info); gst_raw_parse_set_fps (GST_RAW_PARSE (ap), rate, 1); return caps; } gst_raw_parse_get_fps (rp, &fps_n, &fps_d); gst_audio_parse_setup_channel_positions (ap); /* yes, even when format not raw */ gst_audio_info_init (&info); gst_audio_info_set_format (&info, ap->raw_format, fps_n, ap->channels, ap->channel_order); info.layout = ap->interleaved ? GST_AUDIO_LAYOUT_INTERLEAVED : GST_AUDIO_LAYOUT_NON_INTERLEAVED; caps = gst_audio_info_to_caps (&info); switch (ap->format) { case GST_AUDIO_PARSE_FORMAT_RAW: break; case GST_AUDIO_PARSE_FORMAT_ALAW: ncaps = gst_caps_new_simple ("audio/x-alaw", "rate", G_TYPE_INT, fps_n, "channels", G_TYPE_INT, ap->channels, NULL); /* pick mask stuff from faked raw format */ val = gst_structure_get_value (gst_caps_get_structure (caps, 0), "channel-mask"); if (val) gst_caps_set_value (ncaps, "channel-mask", val); gst_caps_unref (caps); caps = ncaps; break; case GST_AUDIO_PARSE_FORMAT_MULAW: ncaps = gst_caps_new_simple ("audio/x-mulaw", "rate", G_TYPE_INT, fps_n, "channels", G_TYPE_INT, ap->channels, NULL); /* pick mask stuff from faked raw format */ val = gst_structure_get_value (gst_caps_get_structure (caps, 0), "channel-mask"); if (val) gst_caps_set_value (ncaps, "channel-mask", val); gst_caps_unref (caps); caps = ncaps; break; default: caps = gst_caps_new_empty (); GST_ERROR_OBJECT (rp, "unexpected format %d", ap->format); break; } return caps; }