MCPcopy Create free account
hub / github.com/GStreamer/gst-python / ResyncBin

Class ResyncBin

old_examples/synchronizer.py:506–564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

504 return self.resolution
505
506class ResyncBin(gst.Bin):
507 def __init__(self, sync_points, maxdiff):
508 self.__gobject_init__()
509
510 self.parsefactories = self._find_parsers()
511 self.parsers = []
512
513 self.demux = gst.element_factory_make('oggdemux')
514 self.mux = gst.element_factory_make('oggmux')
515
516 self.add(self.demux, self.mux)
517
518 self.add_pad(gst.GhostPad('sink', self.demux.get_pad('sink')))
519 self.add_pad(gst.GhostPad('src', self.mux.get_pad('src')))
520
521 self.demux.connect('pad-added', self._new_demuxed_pad)
522
523 self.sync_points = sync_points
524 self.maxdiff = maxdiff
525
526 def _find_parsers(self):
527 registry = gst.registry_get_default()
528 ret = {}
529 for f in registry.get_feature_list(gst.ElementFactory):
530 if f.get_klass().find('Parser') >= 0:
531 for t in f.get_static_pad_templates():
532 if t.direction == gst.PAD_SINK:
533 for s in t.get_caps():
534 ret[s.get_name()] = f.get_name()
535 break
536 return ret
537
538 def _new_demuxed_pad(self, element, pad):
539 format = pad.get_caps()[0].get_name()
540
541 if format not in self.parsefactories:
542 self.async_error("Unsupported media type: %s", format)
543 return
544
545 queue = gst.element_factory_make('queue', 'queue_' + format)
546 queue.set_property('max-size-buffers', 0)
547 queue.set_property('max-size-bytes', 0)
548 print self.maxdiff
549 queue.set_property('max-size-time', int(self.maxdiff * 1.5))
550 parser = gst.element_factory_make(self.parsefactories[format])
551 self.add(queue)
552 self.add(parser)
553 queue.set_state(gst.STATE_PAUSED)
554 parser.set_state(gst.STATE_PAUSED)
555 pad.link(queue.get_compatible_pad(pad))
556 queue.link(parser)
557 parser.link(self.mux)
558 self.parsers.append(parser)
559
560 print repr(self.sync_points)
561
562 if 'video' in format:
563 parser.set_property('synchronization-points',

Callers 1

do_setup_pipelineMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected