試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

gtk-recordMyDesktopとqt-recordMyDesktopのJACKポートの一覧に余分な「入力」ポートが表示される件についてと、その対処

gtk-recordMyDesktopqt-recordMyDesktopは、どちらもバージョン0.3.7の時点では、JACK Audio Connection Kitでオーディオの録音をする際のポート一覧に出力ポートだけでなく、(選択してもエラーになるだけの)「入力」ポートも表示されてしまっている。これはjack_lspコマンドをオプション無しで実行しているためで、以下のようにして-pオプション付きで実行し、その結果からポートの種類が「output」なものだけをリストに追加するための修正を行うことで、出力ポートのみが表示されるようにできる。
GTK+ 2版(gtk-recordMyDesktop):

--- gtk-recordmydesktop-0.3.7.2.orig/src/rmdPrefsWidget.py
+++ gtk-recordmydesktop-0.3.7.2/src/rmdPrefsWidget.py
@@ -335,7 +335,7 @@
             self.__getSelectedPorts__()
         self.ports=[]
         failed=0
-        (stdin,stdout,stderr)=os.popen3(['jack_lsp'],'t')
+        (stdin,stdout,stderr)=os.popen3(['jack_lsp', '-p'],'t')
         ports=stdout.readlines()
         stdin.close()
         stdout.close()
@@ -343,8 +343,9 @@
         self.jack_lsp_liststore.clear()
         self.jack_lsp_listview.get_selection().unselect_all()
         if ports!=[]:
-            for i in ports:
-                self.ports.append(i.replace('\n',""))
+            for i in range(len(ports)):
+                if ports[i].find("output,") != -1:
+                    self.ports.append(ports[i-1].replace('\n',""))
             self.jack_lsp_listview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
         else:
             failed=1

Qt4版(qt-recordMyDesktop):

--- qt-recordmydesktop-0.3.7.2.orig/src/rmdPrefsWidget.py
+++ qt-recordmydesktop-0.3.7.2/src/rmdPrefsWidget.py
@@ -307,7 +307,7 @@
     def __runJackLSP__(self,button=None):
         self.ports=[]
         failed=0
-        (stdin,stdout,stderr)=os.popen3(['jack_lsp'],'t')
+        (stdin,stdout,stderr)=os.popen3(['jack_lsp', '-p'],'t')
         ports=stdout.readlines()
         stdin.close()
         stdout.close()
@@ -315,8 +315,9 @@
         self.jack_lsp_liststore.clear()
 
         if ports!=[]:
-            for i in ports:
-                self.ports.append(i.replace('\n',""))
+            for i in range(len(ports)):
+                if ports[i].find("output,") != -1:
+                    self.ports.append(ports[i-1].replace('\n',""))
             self.jack_lsp_liststore.setEnabled(True)
         else:
             failed=1

(2008/9/13)修正内容を調整し、対象バージョンも0.3.7.2へ変更
修正前は下のようになり、接続できない入力ポートも表示されている。

修正後は出力ポートのみ表示されるようになっている。

参考URL(Pythonの初心者的覚え書き):

(2014/10/2)リンク先を修正

使用したバージョン:

  • recordMyDesktop 0.3.6, 0.3.7