Ticket #123: frameworkd_Milestone3_gstreamer-decodebin-ringtone_20081023-gismo.diff

File frameworkd_Milestone3_gstreamer-decodebin-ringtone_20081023-gismo.diff, 2.0 KB (added by luca@…, 4 years ago)

[FSO-Milestone3] use GStreamer 'decodebin' plugin for ringtone

  • framework/subsystems/odeviced/audio.py

    diff --git a/framework/subsystems/odeviced/audio.py b/framework/subsystems/odeviced/audio.py
    index 3e03931..ec3a977 100644
    a b class GStreamerPlayer( Player ): 
    9898    A Gstreamer based Player. 
    9999    """ 
    100100 
    101     decoderMap = { \ 
    102         "sid": "siddec", 
    103         "mod": "modplug", 
    104         "mp3": "mad", 
    105         "wav": "wavparse", 
    106         } 
    107  
    108101    def __init__( self, *args, **kwargs ): 
    109102        Player.__init__( self, *args, **kwargs ) 
    110103        self.pipelines = {} 
    class GStreamerPlayer( Player ): 
    166159        else: 
    167160            pipeline = self.createPipeline( name ) 
    168161            if pipeline is None: 
    169                 error_cb( UnknownFormat( "known formats are %s" % self.decoderMap.keys() ) ) 
     162                error_cb( NoPipeline( "The GStreamer pipeline was not created" ) ) 
    170163            else: 
    171164                bus = pipeline.get_bus() 
    172165                bus.add_signal_watch() 
    class GStreamerPlayer( Player ): 
    189182        ok_cb() 
    190183 
    191184    def createPipeline( self, name ): 
    192         try: 
    193             decoder = GStreamerPlayer.decoderMap[ name.split( '.' )[-1] ] 
    194         except KeyError: 
    195             return None 
    196         else: 
    197             # parse_launch may burn a few cycles compared to element_factory_make, 
    198             # however it should still be faster than creating the pipeline from 
    199             # individual elements in python, since it's all happening in compiled code 
    200             return gst.parse_launch( "filesrc location=%s ! %s ! alsasink" % ( name, decoder ) ) 
     185        # parse_launch may burn a few cycles compared to element_factory_make, 
     186        # however it should still be faster than creating the pipeline from 
     187        # individual elements in python, since it's all happening in compiled code 
     188        return gst.parse_launch( "filesrc location=%s ! decodebin ! audioconvert ! alsasink" % ( name ) ) 
    201189 
    202190#----------------------------------------------------------------------------# 
    203191class AlsaScenarios( object ):