Changeset 1598

Show
Ignore:
Timestamp:
2005-11-01 20:56:55 (3 years ago)
Author:
jkivlighn
Message:

- Better method of determining when a new clip is hit. It just looks at the start time of the

next clip during every update_time() call, rather than looping over all the times and
figuring out where the current time fits in

- osssink->alsasink

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • annoamp/trunk/annoamp.py

    r1597 r1598  
    3737        self.bin = gst.parse_launch('filesrc name=source ! oggdemux name=demuxer \n' +  
    3838                           'demuxer. ! queue ! cmmldec name=cmml ! fakesink \n' + 
    39                            'demuxer. ! queue ! vorbisdec name=decoder ! audioconvert ! osssink') 
     39                           'demuxer. ! queue ! vorbisdec name=decoder ! audioconvert ! alsasink') 
    4040        self.bin.error = pipe_error 
    4141        ''' 
     
    7777        time = -1 
    7878        try: 
    79             time = self.bin.query_position(gst.FORMAT_TIME)[0] 
     79            time = self.bin.query_position(gst.FORMAT_TIME)[0]/gst.SECOND 
    8080        except: 
    8181            pass 
    8282 
    8383        if time >= 0: 
    84             self.update_time_callback(time/gst.SECOND, self.duration) 
     84            self.update_time_callback(time, self.duration) 
    8585             
    86             chapter = self.chapter_at(time/gst.SECOND) 
    87             if self.pos != chapter: #we hit a new chapter 
    88                 self.current_chapter_callback(chapter) 
    89                 self.pos = chapter 
     86            if self.pos < playlist.iter_n_children(None) - 1: 
     87                next_chapter_at = playlist.get_value(self.playlist.iter_nth_child(None,self.pos+1), 1) 
     88                if time >= next_chapter_at: #we hit a new chapter 
     89                    self.pos += 1 
     90                    self.current_chapter_callback(self.pos) 
    9091 
    9192        if self.bin.get_state()[1] == gst.STATE_PAUSED: 
     
    136137        self.pos = -1 
    137138 
     139        #create a fake pipeline which we'll play, gathering all the tags and storing this information 
    138140        fake = gst.parse_launch('filesrc name=source ! oggdemux name=demuxer ! cmmldec name=cmml ! fakesink \n') 
    139141        fake_filesrc = fake.get_by_name('source') 
     
    174176         
    175177    def seek(self,location): 
    176         event = gst.event_new_seek(1.0, gst.FORMAT_TIME, 1, gst.SEEK_TYPE_SET, gst.SECOND*location, gst.SEEK_TYPE_NONE, 0); 
     178        event = gst.event_new_seek(1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, gst.SECOND*location, gst.SEEK_TYPE_NONE, 0); 
    177179        print "%s" % event 
    178180        result = self.bin.send_event(event)