summaryrefslogtreecommitdiffstats
path: root/ext/gsm
diff options
context:
space:
mode:
Diffstat (limited to 'ext/gsm')
-rw-r--r--ext/gsm/gstgsm.c4
-rw-r--r--ext/gsm/gstgsmdec.c1
-rw-r--r--ext/gsm/gstgsmenc.c21
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);