From db433443c99cbd851fbb27ae5dee7fbd533f767e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 3 Oct 2008 17:11:12 +0000 Subject: ext/faac/gstfaac.c: Warn and clamp to max bitrate for samplerate. Original commit message from CVS: * ext/faac/gstfaac.c: (gst_faac_configure_source_pad): Warn and clamp to max bitrate for samplerate. Fixes #550486. --- ext/faac/gstfaac.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'ext/faac/gstfaac.c') diff --git a/ext/faac/gstfaac.c b/ext/faac/gstfaac.c index fb62b336..487777a0 100644 --- a/ext/faac/gstfaac.c +++ b/ext/faac/gstfaac.c @@ -356,6 +356,7 @@ gst_faac_configure_source_pad (GstFaac * faac) gboolean ret = FALSE; gint n, ver, mpegversion; faacEncConfiguration *conf; + guint maxbitrate; mpegversion = FAAC_DEFAULT_MPEGVERSION; @@ -392,6 +393,20 @@ gst_faac_configure_source_pad (GstFaac * faac) conf->inputFormat = faac->format; conf->outputFormat = faac->outputformat; conf->shortctl = faac->shortctl; + + /* check, warn and correct if the max bitrate for the given samplerate is + * exceeded. Maximum of 6144 bit for a channel */ + maxbitrate = + (unsigned int) (6144.0 * (double) faac->samplerate / (double) 1024.0 + + .5); + if (conf->bitRate > maxbitrate) { + GST_ELEMENT_WARNING (faac, RESOURCE, SETTINGS, (NULL), + ("bitrate %u exceeds maximum allowed bitrate of %u for samplerate %d. " + "Setting bitrate to %u", conf->bitRate, maxbitrate, + faac->samplerate, maxbitrate)); + conf->bitRate = maxbitrate; + } + if (!faacEncSetConfiguration (faac->handle, conf)) goto set_failed; -- cgit v1.2.1