diff --git a/ChangeLog b/ChangeLog index 63b2c0007f..ae89ce9fb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-06-24 Thomas Vander Stichele + + * ext/vorbis/vorbisenc.c: (raw_caps_factory), + (gst_vorbisenc_setup), (gst_vorbisenc_set_property): + respect minimum bitrate; same could be done for max bitrate + 2004-06-24 Thomas Vander Stichele * ext/vorbis/vorbisenc.c: (raw_caps_factory), diff --git a/ext/vorbis/vorbisenc.c b/ext/vorbis/vorbisenc.c index 046b81f651..a270b61f5b 100644 --- a/ext/vorbis/vorbisenc.c +++ b/ext/vorbis/vorbisenc.c @@ -93,6 +93,7 @@ gst_vorbisenc_get_formats (GstPad * pad) #define BITRATE_DEFAULT -1 #define MIN_BITRATE_DEFAULT -1 #define QUALITY_DEFAULT 0.3 +#define LOWEST_BITRATE 8000 /* lowest allowed for a 8 kHz stream */ static void gst_vorbisenc_base_init (gpointer g_class); static void gst_vorbisenc_class_init (VorbisEncClass * klass); @@ -961,6 +962,11 @@ gst_vorbisenc_set_property (GObject * object, guint prop_id, gboolean old_value = vorbisenc->managed; vorbisenc->max_bitrate = g_value_get_int (value); + if (vorbisenc->max_bitrate >= 0 + && vorbisenc->max_bitrate < LOWEST_BITRATE) { + g_warning ("Lowest allowed bitrate is %d", LOWEST_BITRATE); + vorbisenc->max_bitrate = LOWEST_BITRATE; + } if (vorbisenc->min_bitrate > 0 && vorbisenc->max_bitrate > 0) vorbisenc->managed = TRUE; else @@ -972,12 +978,21 @@ gst_vorbisenc_set_property (GObject * object, guint prop_id, } case ARG_BITRATE: vorbisenc->bitrate = g_value_get_int (value); + if (vorbisenc->bitrate >= 0 && vorbisenc->bitrate < LOWEST_BITRATE) { + g_warning ("Lowest allowed bitrate is %d", LOWEST_BITRATE); + vorbisenc->bitrate = LOWEST_BITRATE; + } break; case ARG_MIN_BITRATE: { gboolean old_value = vorbisenc->managed; vorbisenc->min_bitrate = g_value_get_int (value); + if (vorbisenc->min_bitrate >= 0 + && vorbisenc->min_bitrate < LOWEST_BITRATE) { + g_warning ("Lowest allowed bitrate is %d", LOWEST_BITRATE); + vorbisenc->min_bitrate = LOWEST_BITRATE; + } if (vorbisenc->min_bitrate > 0 && vorbisenc->max_bitrate > 0) vorbisenc->managed = TRUE; else