Changeset - f233fa1ec801
[Not reviewed]
default
0 3 0
drewp@bigasterisk.com - 15 years ago 2010-06-15 06:22:40
drewp@bigasterisk.com
vidref displays the directory it's writing frames ot
Ignore-this: fe5419f4c36e596c1fd2cf5612dde9b3
3 files changed with 57 insertions and 5 deletions:
0 comments (0 inline, 0 general)
light9/vidref/main.py
Show inline comments
 
@@ -66,14 +66,15 @@ class MusicTime(object):
 
class VideoRecordSink(gst.Element):
 
    _sinkpadtemplate = gst.PadTemplate ("sinkpadtemplate",
 
                                        gst.PAD_SINK,
 
                                        gst.PAD_ALWAYS,
 
                                        gst.caps_new_any())
 

	
 
    def __init__(self, musicTime):
 
    def __init__(self, musicTime, updateRecordingTo):
 
        gst.Element.__init__(self)
 
        self.updateRecordingTo = updateRecordingTo
 
        self.sinkpad = gst.Pad(self._sinkpadtemplate, "sink")
 
        self.add_pad(self.sinkpad)
 
        self.sinkpad.set_chain_function(self.chainfunc)
 
        self.lastTime = 0
 
        
 
        self.musicTime = musicTime
 
@@ -126,12 +127,13 @@ class VideoRecordSink(gst.Element):
 

	
 
        now = time.time()
 
        log.debug("wrote %s delay of %.2fms, took %.2fms",
 
                  outFilename,
 
                  (now - self.lastTime) * 1000,
 
                  (now - t1) * 1000)
 
        self.updateRecordingTo(outDir)
 
        self.lastTime = now
 

	
 
gobject.type_register(VideoRecordSink)
 

	
 
class Main(object):
 
    def __init__(self):
 
@@ -139,12 +141,14 @@ class Main(object):
 
        wtree = gtk.Builder()
 
        wtree.add_from_file(sibpath(__file__, "vidref.glade"))
 
        mainwin = wtree.get_object("MainWindow")
 
        mainwin.connect("destroy", gtk.main_quit)
 
        wtree.connect_signals(self)
 

	
 
        self.recordingTo = wtree.get_object('recordingTo')
 

	
 
        # wtree.get_object("replayPanel").show() # demo only
 
        rp = wtree.get_object("replayVbox")
 
        self.replayViews = ReplayViews(rp)
 

	
 
        mainwin.show_all()
 
        self.liveVideoXid = wtree.get_object("vid3").window.xid
 
@@ -183,13 +187,21 @@ class Main(object):
 
        def makeElem(t, n=None):
 
            e = gst.element_factory_make(t, n)
 
            self.pipeline.add(e)
 
            return e
 
        
 
        sink = makeElem("xvimagesink")
 
        recSink = VideoRecordSink(self.musicTime)
 
        def setRec(t):
 
            # if you're selecting the text while gtk is updating it,
 
            # you can get a crash in xcb_io
 
            if getattr(self, '_lastRecText', None) == t:
 
                return
 
            with gtk.gdk.lock:
 
                self.recordingTo.set_text(t)
 
            self._lastRecText = t
 
        recSink = VideoRecordSink(self.musicTime, setRec)
 
        self.pipeline.add(recSink)
 

	
 
        tee = makeElem("tee")
 
        
 
        caps = makeElem("capsfilter")
 
        caps.set_property('caps', gst.caps_from_string('video/x-raw-rgb'))
light9/vidref/replay.py
Show inline comments
 
@@ -51,13 +51,18 @@ class ReplayViews(object):
 
        replace previous views, and cleanup short ones
 
        """
 
        for v in self.views:
 
            v.destroy()
 
        self.views[:] = []
 

	
 
        takes = sorted(os.listdir(songDir(song)))
 
        d = songDir(song)
 
        try:
 
            takes = sorted(os.listdir(d))
 
        except OSError:
 
            return
 
        
 
        for take in takes:
 
            td = takeDir(songDir(song), take)
 
            r = Replay(td)
 
            if r.tooShort():
 
                log.warn("cleaning up %s; too short" % r.takeDir)
 
                r.deleteDir()
light9/vidref/vidref.glade
Show inline comments
 
@@ -71,15 +71,16 @@
 
                    <property name="visible">True</property>
 
                    <child>
 
                      <object class="GtkLabel" id="label1">
 
                        <property name="width_request">75</property>
 
                        <property name="height_request">20</property>
 
                        <property name="visible">True</property>
 
                        <property name="label" translatable="yes">Frame rate</property>
 
                        <property name="label" translatable="yes">Frame rate:</property>
 
                      </object>
 
                      <packing>
 
                        <property name="expand">False</property>
 
                        <property name="position">0</property>
 
                      </packing>
 
                    </child>
 
                    <child>
 
                      <object class="GtkSpinButton" id="liveFrameRate">
 
                        <property name="width_request">52</property>
 
@@ -103,15 +104,16 @@
 
                    <property name="visible">True</property>
 
                    <child>
 
                      <object class="GtkLabel" id="label4">
 
                        <property name="width_request">85</property>
 
                        <property name="height_request">20</property>
 
                        <property name="visible">True</property>
 
                        <property name="label" translatable="yes">Input source</property>
 
                        <property name="label" translatable="yes">Input source:</property>
 
                      </object>
 
                      <packing>
 
                        <property name="expand">False</property>
 
                        <property name="position">0</property>
 
                      </packing>
 
                    </child>
 
                    <child>
 
                      <object class="GtkComboBox" id="videoSource">
 
                        <property name="width_request">100</property>
 
@@ -124,12 +126,42 @@
 
                  </object>
 
                  <packing>
 
                    <property name="expand">False</property>
 
                    <property name="position">2</property>
 
                  </packing>
 
                </child>
 
                <child>
 
                  <object class="GtkHBox" id="hbox1">
 
                    <property name="visible">True</property>
 
                    <child>
 
                      <object class="GtkLabel" id="label6">
 
                        <property name="visible">True</property>
 
                        <property name="label" translatable="yes">Recording
 
to:</property>
 
                      </object>
 
                      <packing>
 
                        <property name="position">0</property>
 
                      </packing>
 
                    </child>
 
                    <child>
 
                      <object class="GtkTextView" id="recordingToView">
 
                        <property name="visible">True</property>
 
                        <property name="can_focus">True</property>
 
                        <property name="editable">False</property>
 
                        <property name="wrap_mode">char</property>
 
                        <property name="buffer">recordingTo</property>
 
                      </object>
 
                      <packing>
 
                        <property name="position">1</property>
 
                      </packing>
 
                    </child>
 
                  </object>
 
                  <packing>
 
                    <property name="position">3</property>
 
                  </packing>
 
                </child>
 
              </object>
 
              <packing>
 
                <property name="expand">False</property>
 
                <property name="position">1</property>
 
              </packing>
 
            </child>
 
@@ -304,7 +336,10 @@
 
    </child>
 
  </object>
 
  <object class="GtkImage" id="image2">
 
    <property name="visible">True</property>
 
    <property name="stock">gtk-delete</property>
 
  </object>
 
  <object class="GtkTextBuffer" id="recordingTo">
 
    <property name="text" translatable="yes">/home/drewp/light9-vidref/play-light9.bigasterisk.com_show_dance2010_song6/1276582699</property>
 
  </object>
 
</interface>
0 comments (0 inline, 0 general)