Просмотр исходного кода

Better handling of radiostation

Kenneth van Ewijk 10 лет назад
Родитель
Сommit
98f6ab9bc0
1 измененных файлов с 19 добавлено и 7 удалено
  1. 19 7
      MusicPlayer/MusicPlayer/AudioHandler.cs

+ 19 - 7
MusicPlayer/MusicPlayer/AudioHandler.cs

@@ -17,7 +17,13 @@ namespace MusicPlayer
         public AudioState AState { get; set; }
         public BufferState BState { get; set; }
 
-        public int Buffered { get { return Math.Min((int)((bufpos / (double)LengthBuffer) * 1000), 1000); } }
+        public int Buffered { get
+                {
+                    if(CurrentSong is RadioStation)
+                        return Math.Min((int)((bufpos - ms.Position) / 1000), 1000);
+                    else
+                        return Math.Min((int)((bufpos / (double)LengthBuffer) * 1000), 1000);
+                } }
         private long LengthBuffer { get; set; }
         private long bufpos = 0;
 
@@ -33,7 +39,7 @@ namespace MusicPlayer
 
         private long seek = 0;
 
-        private Stream ms;
+        private MemoryStream ms;
 
         private Thread network;
         private Thread audio;
@@ -168,10 +174,17 @@ namespace MusicPlayer
                         }
                         if (BState == BufferState.DONE && firstrun )
                         {
-                            position = mp3fr.Position;
-                            mp3fr.Close();
-                            StreamFromMP3(ms,position, false);
-                            break;
+                            if( ! (CurrentSong is RadioStation))
+                            {
+                                position = mp3fr.Position;
+                                mp3fr.Close();
+                                StreamFromMP3(ms, position, false);
+                                break;
+                            }
+                            else
+                            {
+                                AState = AudioState.STOPPED;
+                            }
                         }
 
                         playpos = blockAlignedStream.Position;
@@ -242,7 +255,6 @@ namespace MusicPlayer
                     ms.Write(buffer, 0, read);
                     ms.Position = pos;
 
-
                     this.bufpos = ms.Length;
                 }
             }