diff options
-rw-r--r-- | ext/gsm/gstgsm.c | 4 | ||||
-rw-r--r-- | ext/gsm/gstgsmdec.c | 1 | ||||
-rw-r--r-- | ext/gsm/gstgsmenc.c | 21 |
3 files changed, 22 insertions, 4 deletions
diff --git a/ext/gsm/gstgsm.c b/ext/gsm/gstgsm.c index a6154982..663e4e1f 100644 --- a/ext/gsm/gstgsm.c +++ b/ext/gsm/gstgsm.c @@ -32,7 +32,7 @@ GST_CAPS_FACTORY (gsm_caps_factory, GST_CAPS_NEW ( "gsm_gsm", "audio/x-gsm", - "rate", GST_PROPS_INT_RANGE (4000, 48000) + "rate", GST_PROPS_INT_RANGE (1000, 48000) ) ) @@ -46,7 +46,7 @@ GST_CAPS_FACTORY (raw_caps_factory, "signed", GST_PROPS_BOOLEAN (TRUE), "width", GST_PROPS_INT (16), "depth", GST_PROPS_INT (16), - "rate", GST_PROPS_INT_RANGE (4000, 48000), + "rate", GST_PROPS_INT_RANGE (1000, 48000), "channels", GST_PROPS_INT (1) ) ) diff --git a/ext/gsm/gstgsmdec.c b/ext/gsm/gstgsmdec.c index d408e3b8..5ead519c 100644 --- a/ext/gsm/gstgsmdec.c +++ b/ext/gsm/gstgsmdec.c @@ -108,7 +108,6 @@ gst_gsmdec_newcaps (GstPad *pad, GstCaps *caps) GstGSMDec *gsmdec; gsmdec = GST_GSMDEC (gst_pad_get_parent (pad)); - gst_pad_set_caps (gsmdec->srcpad, GST_CAPS_NEW ( "gsm_raw", "audio/raw", diff --git a/ext/gsm/gstgsmenc.c b/ext/gsm/gstgsmenc.c index 73058a66..b5ad0bce 100644 --- a/ext/gsm/gstgsmenc.c +++ b/ext/gsm/gstgsmenc.c @@ -46,6 +46,17 @@ enum { /* FILL ME */ }; +GST_PADTEMPLATE_FACTORY (src_factory, + "src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_CAPS_NEW ( + "gsm_enc", + "audio/x-gsm", + "rate", GST_PROPS_INT_RANGE (1000, 48000) + ) +); + static void gst_gsmenc_class_init (GstGSMEnc *klass); static void gst_gsmenc_init (GstGSMEnc *gsmenc); @@ -121,7 +132,6 @@ gst_gsmenc_newcaps (GstPad *pad, GstCaps *caps) gsmenc = GST_GSMENC (gst_pad_get_parent (pad)); gsmenc->rate = gst_caps_get_int (caps, "rate"); - gst_pad_set_caps (gsmenc->srcpad, GST_CAPS_NEW ( "gsm_gsm", "audio/x-gsm", @@ -142,6 +152,15 @@ gst_gsmenc_chain (GstPad *pad, GstBuffer *buf) gsmenc = GST_GSMENC (GST_OBJECT_PARENT (pad)); + if (!GST_PAD_CAPS (gsmenc->srcpad)) { + gst_pad_set_caps (gsmenc->srcpad, + GST_CAPS_NEW ( + "gsm_enc", + "audio/x-gsm", + "rate", GST_PROPS_INT (gsmenc->rate) + )); + } + data = (gsm_signal*) GST_BUFFER_DATA (buf); size = GST_BUFFER_SIZE (buf) / sizeof (gsm_signal); |