Index: /OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp
===================================================================
--- /OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp (revision 9847)
+++ /OpenSceneGraph/trunk/examples/osgmovie/osgmovie.cpp (revision 9849)
@@ -321,16 +321,32 @@
 }
 
-class CustomAudioSink : public osg::AudioSink
+#if USE_SDL
+
+#include "SDL.h"
+
+class SDLAudioSink : public osg::AudioSink
 {
     public:
     
-        CustomAudioSink(osg::AudioStream* audioStream):
+        SDLAudioSink(osg::AudioStream* audioStream):
             _playing(false),
             _audioStream(audioStream) {}
         
+        ~SDLAudioSink()
+        {        
+            if (_playing)
+            {
+
+	        SDL_PauseAudio(1);
+	        SDL_CloseAudio();
+
+                osg::notify(osg::NOTICE)<<"~SDLAudioSink() destructor, but still playing"<<std::endl;
+            }
+        }
+        
         virtual void startPlaying()
         {
             _playing = true; 
-            osg::notify(osg::NOTICE)<<"CustomAudioSink()::startPlaying()"<<std::endl;
+            osg::notify(osg::NOTICE)<<"SDLAudioSink()::startPlaying()"<<std::endl;
             
             osg::notify(osg::NOTICE)<<"  audioFrequency()="<<_audioStream->audioFrequency()<<std::endl;
@@ -338,10 +354,43 @@
             osg::notify(osg::NOTICE)<<"  audioSampleFormat()="<<_audioStream->audioSampleFormat()<<std::endl;
             
+	    SDL_AudioSpec specs = { 0 };
+	    SDL_AudioSpec wanted_specs = { 0 };
+
+	    wanted_specs.freq = _audioStream->audioFrequency();
+	    wanted_specs.format = AUDIO_S16SYS;
+	    wanted_specs.channels = _audioStream->audioNbChannels();
+	    wanted_specs.silence = 0;
+	    wanted_specs.samples = 1024;
+	    wanted_specs.callback = soundReadCallback;
+	    wanted_specs.userdata = this;
+
+	    if (SDL_OpenAudio(&wanted_specs, &specs) < 0)
+		    throw "SDL_OpenAudio() failed (" + std::string(SDL_GetError()) + ")";
+
+	    SDL_PauseAudio(0);
+
         }
         virtual bool playing() const { return _playing; }
+
+	static void soundReadCallback(void * user_data, uint8_t * data, int datalen);
 
         bool                                _playing;
         osg::observer_ptr<osg::AudioStream> _audioStream;
 };
+
+
+void SDLAudioSink::soundReadCallback(void * const user_data, Uint8 * const data, const int datalen)
+{
+    osg::notify(osg::NOTICE)<<"SDLAudioSink::soundReadCallback"<<std::endl;
+
+	SDLAudioSink * sink = reinterpret_cast<SDLAudioSink*>(user_data);
+        osg::ref_ptr<osg::AudioStream> as = sink->_audioStream.get();
+	if (as.valid())
+        {            
+	    as->consumeAudioBuffer(data, datalen);
+        }
+}
+
+#endif
 
 int main(int argc, char** argv)
@@ -451,6 +500,6 @@
     bool xyPlane = fullscreen;
     
-    bool useOpenALAudio = false;
-    while(arguments.read("--OpenAL")) { useOpenALAudio = true; }
+    bool useAudioSink = false;
+    while(arguments.read("--audio")) { useAudioSink = true; }
 
     for(int i=1;i<arguments.argc();++i)
@@ -463,9 +512,11 @@
             {
                 osg::ImageStream::AudioStreams& audioStreams = imagestream->getAudioStreams();
-                if (useOpenALAudio && !audioStreams.empty())
+                if (useAudioSink && !audioStreams.empty())
                 {
                     osg::AudioStream* audioStream = audioStreams[0].get();
                     osg::notify(osg::NOTICE)<<"AudioStream read ["<<audioStream->getName()<<"]"<<std::endl;
-                    audioStream->setAudioSink(new CustomAudioSink(audioStream));
+#if USE_SDL
+                    audioStream->setAudioSink(new SDLAudioSink(audioStream));
+#endif
                 }
 
Index: /OpenSceneGraph/trunk/examples/osgmovie/CMakeLists.txt
===================================================================
--- /OpenSceneGraph/trunk/examples/osgmovie/CMakeLists.txt (revision 9847)
+++ /OpenSceneGraph/trunk/examples/osgmovie/CMakeLists.txt (revision 9849)
@@ -1,8 +1,15 @@
 # INCLUDE_DIRECTORIES( ${OPENAL_INCLUDE_DIR} )
+# SET(TARGET_EXTERNAL_LIBRARIES ${OPENAL_LIBRARY} alut)
+
+IF   (SDL_FOUND)
+    SET(TARGET_EXTERNAL_LIBRARIES ${SDL_LIBRARY} )
+    INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR} )
+    ADD_DEFINITIONS(-DUSE_SDL)
+ENDIF(SDL_FOUND)
 
 SET(TARGET_SRC osgmovie.cpp )
 SET(TARGET_ADDED_LIBRARIES osgGA )
 
-# SET(TARGET_EXTERNAL_LIBRARIES ${OPENAL_LIBRARY} alut)
+
 
 #### end var setup  ###
