OSDLAudioRenderer.cc

Go to the documentation of this file.
00001 #include "OSDLAudioRenderer.h"
00002 
00003 
00004 #include "OSDLScheduler.h"             // for GetExistingScheduler
00005 #include "OSDLMultimediaRenderer.h"    // for MultimediaRenderer
00006 
00007 //#include "OSDLCamera.h"       // for Camera
00008 
00009 
00010 
00011 using namespace OSDL::Events ;
00012 using namespace OSDL::Rendering ;
00013 using namespace OSDL::Engine ;
00014 
00015 using std::string ;
00016 
00017 
00018 #ifdef OSDL_DEBUG_AUDIO_RENDERER
00019 
00020 #define OSDL_AUDIO_RENDER_LOG(message) send( message ) ;
00021 
00022 #else
00023 
00024 #define OSDL_AUDIO_RENDER_LOG(message)
00025 
00026 #endif
00027 
00028 
00029 
00030 
00031 AudioRenderer::AudioRenderer( bool registerToRootRenderer ) 
00032         throw( RenderingException ) :
00033     Renderer( /* registerToScheduler */ false )
00034     //,_internalCamera( 0 )
00035 {
00036 
00037     if ( registerToRootRenderer )
00038     {
00039     
00040         Renderer * renderer ;
00041         
00042         try
00043         {
00044         
00045             // Retrieve the root renderer :
00046             renderer = & Renderer::GetExistingRootRenderer() ;
00047             
00048         }
00049         catch( const RenderingException & e )
00050         {
00051             throw RenderingException( "AudioRenderer constructor : "
00052                 "no already existing root renderer ("
00053                 + e.toString() 
00054                 + ") whereas registering had been requested." ) ;
00055         } 
00056         
00057         // Check it is a multimedia renderer indeed :
00058         MultimediaRenderer * multimediaRenderer = 
00059             dynamic_cast<MultimediaRenderer *>( renderer ) ;
00060                 
00061         if ( multimediaRenderer == 0 )
00062             throw RenderingException( "AudioRenderer constructor : "
00063                 "root renderer is not a multimedia renderer, "
00064                 "no registering possible." ) ;
00065                     
00066         multimediaRenderer->setAudioRenderer( * this ) ;
00067 
00068     }
00069     
00070 }
00071 
00072 
00073 
00074 AudioRenderer::~AudioRenderer() throw()
00075 {
00076 /*
00077     if ( _internalCamera != 0 )
00078         delete _internalCamera ;
00079 */
00080 }
00081 
00082 /*
00083 bool hasCamera() const throw() 
00084 {
00085     return ( _internalCamera != 0 ) ;
00086 }
00087 
00088 
00089 Camera & AudioRenderer::getCamera() const throw( RenderingException )
00090 {
00091     if ( _internalCamera == 0 )
00092         return * _internalCamera ;
00093 }
00094 
00095 
00096 void AudioRenderer::setCamera( Camera & newCamera ) throw()
00097 {
00098     if ( _internalCamera != 0 )
00099         delete _internalCamera ;
00100     
00101     _internalCamera = & newCamera ;
00102     
00103 }
00104 */
00105 
00106 void AudioRenderer::render( Events::RenderingTick currentRenderingTick ) throw()
00107 {
00108 
00109     OSDL_AUDIO_RENDER_LOG( "Audio rendering ! " ) ;
00110     
00111     /*
00112      * Beware, currentRenderingTick might be always zero if no scheduler 
00113      * is used.
00114      *
00115      */
00116     _renderingDone++ ;
00117     
00118 }
00119 
00120 
00121 void AudioRenderer::onRenderingSkipped( RenderingTick skippedRenderingTick )
00122     throw()
00123 {
00124 
00125     OSDL_AUDIO_RENDER_LOG( "Audio rendering skipped." ) ;
00126     _renderingSkipped++ ;
00127     
00128 }
00129 
00130 
00131 const string AudioRenderer::toString( Ceylan::VerbosityLevels level ) 
00132     const throw() 
00133 {
00134 
00135     string res = "Audio renderer, last rendering tick was " 
00136         + Ceylan::toString( _lastRender )
00137         + ", having performed " + Ceylan::toString( _renderingDone ) 
00138         + " rendering(s) for "
00139         + Ceylan::toString( _renderingSkipped ) + " skip(s)" ;
00140     
00141     if ( _renderingDone + _renderingSkipped != 0 )
00142         res += " (rendering proportion : " 
00143             + Ceylan::toString( 100 * _renderingDone 
00144                 / ( _renderingDone + _renderingSkipped ) )
00145             + "%)" ;
00146             
00147     /*      
00148     if ( _internalCamera != 0 )
00149         res += ". Following camera is being used : " 
00150             + _internalCamera->toString( level ) ;
00151     else
00152         res += ". No camera is currently used" ;         
00153     */  
00154     
00155     return res ;
00156     
00157 }
00158 

Generated on Fri Mar 30 14:46:59 2007 for OSDL by  doxygen 1.5.1