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. --- ChangeLog | 6 ++++++ ext/faac/gstfaac.c | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/ChangeLog b/ChangeLog index feab1f44..73f046cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-03 Wim Taymans + + * ext/faac/gstfaac.c: (gst_faac_configure_source_pad): + Warn and clamp to max bitrate for samplerate. + Fixes #550486. + 2008-10-03 Zaheer Abbas Merali * gst/mpegtsparse/mpegtsparse.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