--- a/xbmc/FileSystem/FileShoutcast.h
+++ b/xbmc/FileSystem/FileShoutcast.h
@@ -23,37 +23,15 @@
 //
 //////////////////////////////////////////////////////////////////////
 
-#if !defined(AFX_FILESHOUTCAST_H__6B6082E6_547E_44C4_8801_9890781659C0__INCLUDED_)
-#define AFX_FILESHOUTCAST_H__6B6082E6_547E_44C4_8801_9890781659C0__INCLUDED_
-
-#if _MSC_VER > 1000
 #pragma once
-#endif // _MSC_VER > 1000
 
 #include "IFile.h"
+#include "FileCurl.h"
 #include "StdString.h"
-
-// prevent inclusion of config.h from libshout
-#define __SRCONFIG_H__
-#include "lib/libshout/rip_manager.h"
-#undef __SRCONFIG_H__
-
-namespace MUSIC_INFO
-{
-  class CMusicInfoTag;
-}
+#include "MusicInfoTag.h"
 
 namespace XFILE
 {
-typedef struct FileStateSt
-{
-  bool bBuffering;
-  bool bRipDone;
-  bool bRipStarted;
-  bool bRipError;
-}
-FileState;
-
 class CFileShoutcast : public IFile
 {
 public:
@@ -67,17 +45,17 @@
   virtual unsigned int Read(void* lpBuf, int64_t uiBufSize);
   virtual int64_t Seek(int64_t iFilePosition, int iWhence = SEEK_SET);
   virtual void Close();
-  virtual bool CanRecord();
-  virtual bool Record();
-  virtual void StopRecording();
-  virtual bool IsRecording();
-  virtual bool GetMusicInfoTag(MUSIC_INFO::CMusicInfoTag& tag);
-  virtual CStdString GetContent();
 protected:
-  void outputTimeoutMessage(const char* message);
+  void ExtractTagInfo(const char* buf);
+  void ReadTruncated(char* buf2, int size);
+
   unsigned int m_lastTime;
-  int m_mimetype;
-  RIP_MANAGER_OPTIONS m_opt;
+  CFileCurl m_file;
+  int m_metaint;
+  int m_discarded; // data used for tags
+  int m_currint;
+  char* m_buffer; // buffer used for tags
+  MUSIC_INFO::CMusicInfoTag m_tag;
 };
 }
-#endif // !defined(AFX_FILESHOUTCAST_H__6B6082E6_547E_44C4_8801_9890781659C0__INCLUDED_)
+