Index: indra/llaudio/audioengine_openal.cpp
===================================================================
--- indra/llaudio/audioengine_openal.cpp	(revision 132)
+++ indra/llaudio/audioengine_openal.cpp	(working copy)
@@ -4,6 +4,18 @@
 #include "listener_openal.h"
 
 LLAudioEngine_OpenAL::LLAudioEngine_OpenAL(){
+
+	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 (); 
+	}
 }
 
 LLAudioEngine_OpenAL::~LLAudioEngine_OpenAL(){
@@ -186,20 +198,28 @@
 // ------------
 
 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){
 
-	if (url) {
+	std::string url(url_cstr);
+
+	if(!m_streamer)
+		return;
+
+	if (!url.empty()) {
 		llinfos << "LLAudioEngine_OpenAL::startInternetStream() Starting internet stream: " << url << llendl;
-		mInternetStreamURL = new std::string(url);
+		mInternetStreamURL=url;
+		m_streamer->load ( 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 +227,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();
 }
+
+
Index: indra/llaudio/audioengine_openal.h
===================================================================
--- indra/llaudio/audioengine_openal.h	(revision 132)
+++ indra/llaudio/audioengine_openal.h	(working copy)
@@ -5,7 +5,9 @@
 
 #include "audioengine.h"
 #include "listener_openal.h"
+#include "llmediaimplgstreamer.h"
 
+
 class LLAudioEngine_OpenAL : public LLAudioEngine{
 	public:
 		LLAudioEngine_OpenAL();
@@ -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);
@@ -39,7 +41,9 @@
 		void updateWind(LLVector3 direction, F32 camera_altitude);
 
 	protected:
-		std::string* mInternetStreamURL;
+		std::string mInternetStreamURL;
+		LLMediaImplGStreamer * m_streamer;
+
 };
 
 class LLAudioChannelOpenAL : public LLAudioChannel{

