diff -ur ./indra/llaudio/audioengine.h ./indra/llaudio/audioengine.h
--- ./indra/llaudio/audioengine.h	2008-03-15 21:23:17.000000000 +0000
+++ ./indra/llaudio/audioengine.h	2008-03-15 20:43:12.000000000 +0000
@@ -144,6 +144,7 @@
 	// use a value from 0.0 to 1.0, inclusive
 	virtual void setInternetStreamGain(F32 vol) { mInternetStreamGain = vol; }
 	virtual const char* getInternetStreamURL() { return ""; }
+	virtual void InitStreamer() = 0;
 
 	// For debugging usage
 	virtual LLVector3 getListenerPos();
diff -ur ./indra/llaudio/audioengine_openal.cpp ./indra/llaudio/audioengine_openal.cpp
--- ./indra/llaudio/audioengine_openal.cpp	2008-03-15 21:24:16.000000000 +0000
+++ ./indra/llaudio/audioengine_openal.cpp	2008-03-15 20:14:23.000000000 +0000
@@ -185,21 +187,48 @@
 
 // ------------
 
+
+void LLAudioEngine_OpenAL::InitStreamer()
+{
+
+	m_streamer=new LLMediaImplGStreamer ();
+
+	if(!m_streamer)
+	{
+		llwarns << "LLAudioEngine_OpenAL::LLAudioEngine_OpenAL() Failed to create our private gstreamer audio instance" << llendl;
+	}
+	
+	if(m_streamer)
+	{
+		m_streamer->init (); 
+	}
+
+}
+
+
 void LLAudioEngine_OpenAL::initInternetStream(){
-	mInternetStreamURL = NULL;
+	mInternetStreamURL.erase();
+	
 }
 
-void LLAudioEngine_OpenAL::startInternetStream(const char* url){
-	if(mInternetStreamURL){
-		delete mInternetStreamURL;
-	}
+void LLAudioEngine_OpenAL::startInternetStream(const char * url_cstr){
+
+	std::string url(url_cstr);
+
+	if(!m_streamer)
+		return;
 
-	if (url) {
+	if (!url.empty()) {
 		llinfos << "LLAudioEngine_OpenAL::startInternetStream() Starting internet stream: " << url << llendl;
-		mInternetStreamURL = new std::string(url);
+		mInternetStreamURL=url;
+		m_streamer->navigateTo ( url );
+		llinfos << "Playing....." << llendl;		
+		m_streamer->play ();
+
 	}else{
-		llinfos << "LLAudioEngine_OpenAL::startInternetStream() Set internet stream to null" << llendl;
-		mInternetStreamURL = NULL;
+		llinfos << "LLAudioEngine_OpenAL seting stream to NULL"<< llendl;
+		mInternetStreamURL.erase();
+		m_streamer->stop ();
 	}
 }
 
@@ -207,28 +236,53 @@
 }
 
 void LLAudioEngine_OpenAL::stopInternetStream(){
+		mInternetStreamURL.erase();
+		m_streamer->stop ();
 }
 
 void LLAudioEngine_OpenAL::pauseInternetStream(int pause){
+
+	if(!m_streamer)
+		return;
+	
+	if(pause)
+		m_streamer->pause();
+	else
+		m_streamer->play();
+
 }
 
 int LLAudioEngine_OpenAL::isInternetStreamPlaying(){
-	if(mInternetStreamURL){
-		return 2; // "Paused"
-	}else{
+
+	if(!m_streamer)
 		return 0;
+	
+	if(m_streamer->isPlaying())
+	{
+		return 1; // Active and playing
+	}	
+	if(m_streamer->isPaused())
+	{
+		return 2; // paused
 	}
+
+	return 0; // Stopped
 }
 
 void LLAudioEngine_OpenAL::getInternetStreamInfo(char* artist_out, char* title_out){
 }
 
 void LLAudioEngine_OpenAL::setInternetStreamGain(F32 vol){
+	// Set the gstreamer volume here
+	if(!m_streamer)
+		return;
+
+	vol = llclamp(vol, 0.f, 1.f);
+	m_streamer->setVolume(vol);
 }
 
 const char* LLAudioEngine_OpenAL::getInternetStreamURL(){
-	if(mInternetStreamURL){
-		return mInternetStreamURL->c_str();
-	}
-	return "";
+	return mInternetStreamURL.c_str();
 }
+
+
diff -ur ./indra/llaudio/audioengine_openal.h ./indra/llaudio/audioengine_openal.h
--- ./indra/llaudio/audioengine_openal.h	2008-03-15 21:24:16.000000000 +0000
+++ ./indra/llaudio/audioengine_openal.h	2008-03-15 20:24:17.000000000 +0000
@@ -5,6 +5,8 @@
 
 #include "audioengine.h"
 #include "listener_openal.h"
+#include "llmediaimplgstreamer.h"
+
 
 class LLAudioEngine_OpenAL : public LLAudioEngine{
 	public:
@@ -25,7 +27,7 @@
 
 		// Internet stream methods
 		virtual void initInternetStream();
-		virtual void startInternetStream(const char* url);
+		virtual void startInternetStream(const char * url_cstr);
 		virtual void stopInternetStream();
 		virtual void updateInternetStream();
 		virtual void pauseInternetStream(int pause);
@@ -33,13 +35,16 @@
 		virtual void getInternetStreamInfo(char* artist, char* title);
 		virtual void setInternetStreamGain(F32 vol);
 		virtual const char* getInternetStreamURL();
+		virtual void InitStreamer();
 
 		void initWind();
 		void cleanupWind();
 		void updateWind(LLVector3 direction, F32 camera_altitude);
 
 	protected:
-		std::string* mInternetStreamURL;
+		std::string mInternetStreamURL;
+		LLMediaImplGStreamer * m_streamer;
+
 };
 
 class LLAudioChannelOpenAL : public LLAudioChannel{
--- ./indra/llmedia/llmediaimplgstreamer.cpp	2008-03-15 23:06:08.000000000 +0000
+++ ./indra/llmedia/llmediaimplgstreamer.cpp	2008-03-15 23:06:02.000000000 +0000
@@ -618,4 +619,25 @@
 	return false;
 }
 
+bool LLMediaImplGStreamer::isPaused()
+{
+
+	if(getStatus() == LLMediaBase::STATUS_PAUSED)
+		return true;
+
+	return false;
+
+}
+
+bool LLMediaImplGStreamer::isPlaying()
+{
+
+	if(getStatus() == LLMediaBase::STATUS_STARTED)
+		return true;
+
+	return false;
+
+}
+
+
 #endif // LL_GSTREAMER_ENABLED
--- ./indra/llmedia/llmediaimplgstreamer.h	2008-03-15 23:06:08.000000000 +0000
+++ ./indra/llmedia/llmediaimplgstreamer.h	2008-03-15 23:02:41.000000000 +0000
@@ -80,12 +80,16 @@
 
 	        bool stop();
 	        bool play();
+     		bool pause();
 	        LLMediaEmitter< LLMediaObserver > getEventEmitter() const {return mEventEmitter;};
+		bool isPlaying();
+		bool isPaused();
+
 
 	private:
         	// misc
 	        bool unload();
-	        bool pause();
+	   
 		unsigned char* mediaData;
         	int mMediaRowbytes;
 
--- ./indra/newview/llstartup.cpp	2008-03-15 23:31:02.000000000 +0000
+++ ./indra/newview/llstartup.cpp	2008-03-15 21:24:16.000000000 +0000
@@ -641,6 +641,9 @@
 		LLViewerMedia::initClass();
 		LLViewerParcelMedia::initClass();
 
+		if (gAudiop)
+			gAudiop->InitStreamer();
+
 		if (gViewerWindow)
 		{
 			audio_update_volume(true);
