| 
					
				 | 
			
			
				@@ -490,12 +490,12 @@ impl PlayerInternal { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // If we're playing, ensure, that we have enough data leaded to avoid a buffer underrun. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let stream_data_rate = self.stream_data_rate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if let Some(stream_loader_controller) = self.state.stream_loader_controller() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     stream_loader_controller.set_stream_mode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if let PlayerState::Playing{..} = self.state { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if let Some(stream_loader_controller) = self.state.stream_loader_controller() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let stream_data_rate = stream_loader_controller.data_rate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let wait_for_data_length = (2 * stream_loader_controller.ping_time_ms() * stream_data_rate) / 1000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         stream_loader_controller.fetch_next_blocking(wait_for_data_length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -561,11 +561,22 @@ impl PlayerInternal { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    fn stream_data_rate(&self) -> usize { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        match self.config.bitrate { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Bitrate::Bitrate96 => 12 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Bitrate::Bitrate160 => 20 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Bitrate::Bitrate320 => 40 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fn stream_data_rate(&self, format: FileFormat) -> usize { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        match format { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::OGG_VORBIS_96 =>  12 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::OGG_VORBIS_160 => 20 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::OGG_VORBIS_320=> 40 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP3_256 => 32 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP3_320 => 40 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP3_160 => 20 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP3_96 => 12 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP3_160_ENC => 20 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP4_128_DUAL => 16 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::OTHER3 => 40 * 1024, // better some high guess than nothing 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::AAC_160 => 20 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::AAC_320 => 40 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::MP4_128 => 16 * 1024, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileFormat::OTHER5 => 40 * 1024, // better some high guess than nothing 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -618,10 +629,7 @@ impl PlayerInternal { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let encrypted_file = encrypted_file.wait().unwrap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let mut stream_loader_controller = encrypted_file.get_stream_loader_controller(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // tell the stream loader how to optimise its strategy. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        stream_loader_controller.set_stream_data_rate(self.stream_data_rate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let mut stream_loader_controller = encrypted_file.get_stream_loader_controller(self.stream_data_rate(*format)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if position == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // No need to seek -> we stream from the beginning 
			 |