From 6628e6f2e3d28618887a2c19a4d6f52d274d32be Mon Sep 17 00:00:00 2001 From: Karl 'vollmerk' Vollmer Date: Fri, 9 Sep 2005 06:03:33 +0000 Subject: fixed downsample to invalid bitrates --- lib/stream.lib.php | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'lib/stream.lib.php') diff --git a/lib/stream.lib.php b/lib/stream.lib.php index 262df981..c39282a6 100644 --- a/lib/stream.lib.php +++ b/lib/stream.lib.php @@ -190,10 +190,10 @@ function start_downsample($song,$now_playing_id=0,$song_name=0) { else { $sample_rate = floor($max_bitrate/$active_streams); } // end else - - /* Round to standard bitrates */ - $sample_rate = 8*(floor($sample_rate/8)); - + + /* Validate the bitrate */ + $sample_rate = validate_bitrate($sample_rate); + // Never go over the users sample rate if ($sample_rate > $user_sample_rate) { $sample_rate = $user_sample_rate; } @@ -248,4 +248,38 @@ function start_downsample($song,$now_playing_id=0,$song_name=0) { } // start_downsample +/** + * validate_bitrate + * this function takes a bitrate and returns a valid one + * @package Stream + * @catagory Downsample + */ +function validate_bitrate($bitrate) { + + + // Setup an array of valid bitrates for Lame (yea yea, others might be different :P) + $valid_rate = array('32','40','56','64','80','96','112','128','160','192','224','256','320'); + + /* Round to standard bitrates */ + $sample_rate = 8*(floor($bitrate/8)); + + if (in_array($sample_rate,$valid_rate)) { + return $sample_rate; + } + + /* Check to see if it's over 320 */ + if ($sample_rate > 320) { + return '320'; + } + + foreach ($valid_rate as $key=>$rate) { + $next_key = $key+1; + + if ($sample_rate > $rate AND $sample_rate < $valid_rate[$next_key]) { + return $sample_rate; + } + } // end foreach + +} // validate_bitrate + ?> -- cgit