summaryrefslogtreecommitdiff
path: root/ext/sbc
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-11-23 17:00:13 +0000
committerTim-Philipp Müller <tim@centricular.net>2013-03-27 22:21:15 +0000
commit6a34433dd8091f161435bb3caa6424f9f633d078 (patch)
tree51d28ca72d7e4b14bf76d7232b5718b4924f24f5 /ext/sbc
parent742f9526881c6752b7d9a8cca824299f8468539b (diff)
downloadgstreamer-plugins-bad-6a34433dd8091f161435bb3caa6424f9f633d078.tar.gz
sbc: Code cleanup.
Diffstat (limited to 'ext/sbc')
-rw-r--r--ext/sbc/gstsbcenc.c52
-rw-r--r--ext/sbc/gstsbcenc.h3
2 files changed, 17 insertions, 38 deletions
diff --git a/ext/sbc/gstsbcenc.c b/ext/sbc/gstsbcenc.c
index 51ea3f11f..5d7a80450 100644
--- a/ext/sbc/gstsbcenc.c
+++ b/ext/sbc/gstsbcenc.c
@@ -350,24 +350,11 @@ gst_sbc_enc_fill_sbc_params (GstSbcEnc * enc, GstCaps * caps)
enc->mode = enc->sbc.joint = gst_sbc_get_mode_int (mode);
enc->allocation = enc->sbc.allocation =
gst_sbc_get_allocation_mode_int (allocation);
-
- return TRUE;
-}
-
-static gboolean
-gst_sbc_enc_change_caps (GstSbcEnc * enc, GstCaps * caps)
-{
- GST_INFO_OBJECT (enc, "Changing srcpad caps (renegotiation)");
-
- if (!gst_pad_accept_caps (enc->srcpad, caps)) {
- GST_WARNING_OBJECT (enc, "Src pad refused caps");
- return FALSE;
- }
-
- if (!gst_sbc_enc_fill_sbc_params (enc, caps)) {
- GST_ERROR_OBJECT (enc, "couldn't get sbc parameters from caps");
- return FALSE;
- }
+ enc->codesize = sbc_get_codesize (&enc->sbc);
+ enc->frame_length = sbc_get_frame_length (&enc->sbc);
+ enc->frame_duration = sbc_get_frame_duration (&enc->sbc);
+ GST_DEBUG ("codesize: %d, frame_length: %d, frame_duration: %d",
+ enc->codesize, enc->frame_length, enc->frame_duration);
return TRUE;
}
@@ -378,42 +365,31 @@ sbc_enc_chain (GstPad * pad, GstBuffer * buffer)
GstSbcEnc *enc = GST_SBC_ENC (gst_pad_get_parent (pad));
GstAdapter *adapter = enc->adapter;
GstFlowReturn res = GST_FLOW_OK;
- gint codesize, frame_len;
- codesize = sbc_get_codesize (&enc->sbc);
- frame_len = sbc_get_frame_length (&enc->sbc);
gst_adapter_push (adapter, buffer);
- while (gst_adapter_available (adapter) >= codesize && res == GST_FLOW_OK) {
+ while (gst_adapter_available (adapter) >= enc->codesize && res == GST_FLOW_OK) {
GstBuffer *output;
GstCaps *caps;
const guint8 *data;
int consumed;
caps = GST_PAD_CAPS (enc->srcpad);
-
res = gst_pad_alloc_buffer_and_set_caps (enc->srcpad,
- GST_BUFFER_OFFSET_NONE, frame_len, caps, &output);
+ GST_BUFFER_OFFSET_NONE, enc->frame_length, caps, &output);
+ if (res != GST_FLOW_OK)
+ goto done;
- data = gst_adapter_peek (adapter, codesize);
- consumed = sbc_encode (&enc->sbc, (gpointer) data, codesize,
- GST_BUFFER_DATA (output), frame_len, NULL);
+ data = gst_adapter_peek (adapter, enc->codesize);
+ consumed = sbc_encode (&enc->sbc, (gpointer) data,
+ enc->codesize,
+ GST_BUFFER_DATA (output), GST_BUFFER_SIZE (output), NULL);
if (consumed <= 0) {
- GST_ERROR ("comsumed < 0, codesize: %d", codesize);
+ GST_ERROR ("comsumed < 0, codesize: %d", enc->codesize);
break;
}
gst_adapter_flush (adapter, consumed);
- if (res != GST_FLOW_OK)
- goto done;
-
- if (!gst_caps_is_equal (caps, GST_BUFFER_CAPS (output)))
- if (!gst_sbc_enc_change_caps (enc, GST_BUFFER_CAPS (output))) {
- res = GST_FLOW_ERROR;
- GST_ERROR_OBJECT (enc, "couldn't renegotiate caps");
- goto done;
- }
-
GST_BUFFER_TIMESTAMP (output) = GST_BUFFER_TIMESTAMP (buffer);
res = gst_pad_push (enc->srcpad, output);
diff --git a/ext/sbc/gstsbcenc.h b/ext/sbc/gstsbcenc.h
index f65bcc945..d81428c91 100644
--- a/ext/sbc/gstsbcenc.h
+++ b/ext/sbc/gstsbcenc.h
@@ -55,6 +55,9 @@ struct _GstSbcEnc {
gint blocks;
gint allocation;
gint subbands;
+ gint codesize;
+ gint frame_length;
+ gint frame_duration;
sbc_t sbc;
};