diff options
author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-10-29 15:02:26 +0000 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-10-29 15:02:26 +0000 |
commit | ea39736b353ba409d03e8f86b7ca6ca1e746fecd (patch) | |
tree | 09f978819246b2c25cb0a1bb53da66cafce5df61 /audio/gstsbcparse.c | |
parent | 973d90d520edc392c458c556d9f1a3e242a1f080 (diff) |
Add bitpool capability.
Diffstat (limited to 'audio/gstsbcparse.c')
-rw-r--r-- | audio/gstsbcparse.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/audio/gstsbcparse.c b/audio/gstsbcparse.c index a15a75fb..42ae9550 100644 --- a/audio/gstsbcparse.c +++ b/audio/gstsbcparse.c @@ -53,16 +53,17 @@ static GstStaticPadTemplate sbc_parse_src_factory = "mode = (string) { mono, dual, stereo, joint }, " "blocks = (int) { 4, 8, 12, 16 }, " "subbands = (int) { 4, 8 }, " - "allocation = (string) { snr, loudness }")); + "allocation = (string) { snr, loudness }," + "bitpool = (int) [ 2, 64 ]")); -/* reates a fixed caps from the caps given. */ +/* Creates a fixed caps from the caps given. */ static GstCaps* sbc_parse_select_caps(GstSbcParse *parse, GstCaps *caps) { GstCaps *result; GstStructure *structure; const GValue *value; gboolean error = FALSE; - gint temp, rate, channels, blocks, subbands; + gint temp, rate, channels, blocks, subbands, bitpool; const gchar* allocation = NULL; const gchar* mode = NULL; const gchar* error_message = NULL; @@ -133,6 +134,20 @@ static GstCaps* sbc_parse_select_caps(GstSbcParse *parse, GstCaps *caps) subbands = temp; } + if (!gst_structure_has_field(structure, "bitpool")) { + error = TRUE; + error_message = "no bitpool"; + goto error; + } else { + value = gst_structure_get_value(structure, "bitpool"); + if (GST_VALUE_HOLDS_INT_RANGE(value)) { + temp = gst_sbc_select_bitpool_from_range(value); + } else { + temp = g_value_get_int(value); + } + bitpool = temp; + } + if (!gst_structure_has_field(structure, "allocation")) { error = TRUE; error_message = "no allocation."; @@ -173,11 +188,13 @@ error: "blocks", G_TYPE_INT, blocks, "subbands", G_TYPE_INT, subbands, "allocation", G_TYPE_STRING, allocation, + "bitpool", G_TYPE_INT, bitpool, NULL); parse->sbc.rate = rate; parse->sbc.channels = channels; parse->sbc.blocks = blocks; parse->sbc.subbands = subbands; + parse->sbc.bitpool = bitpool; parse->sbc.joint = gst_sbc_get_mode_int(mode); parse->sbc.allocation = gst_sbc_get_allocation_mode_int(allocation); |