Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

チャンネル設定とキャプチャコマンド RubyでPVRを作ろう!その14

チャンネル設定と、キャプチャ用の外部コマンドをキックする部分です。基本的には、外部プログラムをsystem()関数で呼ぶだけ。どうも、Windows用のActiveRubyはspawn系が使えないみたいなので、systemで我慢。バックグラウンドでコマンドを起動するには、startコマンドを使えば良いでしょう(多分)。

ちょっとコードはわかりにくいが、system()で呼び出すコマンドのパラメーターをhDBというハッシュ変数で指定しています。 @hDB["%1]~@hDB["%9"]はパラメーターの仮引数で、iEPGD#to_s()を用いて一度評価しています。このとき、Windowsでファイル名に使えない文字を全角に変換、半角スペースも'_'に変換しています(to_WInFileName関数)。その上で、system()関数で実際に外部のコマンドを呼び出しています。

 今回のプログラムでは、チューナーとキャプチャは別のプログラムで制御してもよいようにしていますが、キャプチャプログラムによっては、キャプチャ開始後にチューナーのチャンネル切り替えが起きるとコケる場合がある一方で、この問題がなければ同時にスタートさせた方が録画の頭が切れてしまう可能性が減ります。そこで、チューナーの制御をシーケンシャルに行うか、別スレッドで並行して行うかを選択できるようにしました。まあ、これも、startコマンドを使えばよいのですが...   

 なお、Windowsでspawnするプログラムhttp://www.longtail.co.jp/pck/
とかを発見しました。一応linkしときましたが、中身をちゃんと見たわけではないので、今回の目的にあっているかどうかは知りません。


で、肝心のtunerクラスと、VideoRecorderクラスだけれども、ほとんど同じコードになってしまっている。なんか、だっさいな~...こういう時どうするのが、ruby風なんだろ??

require( 'IEPGD' )
require( 'to_WinFileName' )
require('thread') class TVTuner
  def initialize( hDB , logsw=false )
    @hDB = hDB
    @logSw = logsw
    if @logSw
      print( "#{Time.now.to_s} #{__FILE__},#{__LINE__},::initialize()\n" )
    end # if
    if ( cmd = @hDB[ "init_cmd"]) != ""
      system( cmd )
    end
  end # def initializer( iniFileSpec )   attr_accessor :logSw   def tune( iEPGD )
    if (cmd = String.new( @hDB["tune_cmd"]) ) != ""
      1.upto(9) {|i|
        stridx = sprintf("%%%d", i)
        param = iEPGD.to_s( @hDB[ stridx ] )
       param = to_WinFileName(param )
        cmd = cmd.gsub( /#{stridx}/, param )
      }
      if @logSw
        print( "#{Time.now.to_s} #{__FILE__},#{__LINE__},::tune()  #{cmd}\n" )
      end #if
      if @hDB["Concurrent"] == "true"
        Thread::start {
          system( cmd )
        }
      else
        system( cmd )
      end
    end
  end # tune
end # class TVTuner



スポンサーサイト

漢字処理で(やっぱり)はまる RubyでPVRを作ろう 13

 少しづつデバッグも始めているのだが、漢字(というか2バイトコード)処理で、やっぱり嵌った。

 結局、Windows版のRubyを使う場合でも、
c:\>Ruby -Ks
のようにオプション-Ksをつけないと、SJISの取り扱いはうまく行かないらしい。
SJISはマイクロソフトの大罪とは私は必ずしも思わない(だって当時のヘボハードで扱うには、「現実的」な解だった、と思えるもん)けど、日本語Windowsの原罪ではあると思う。

なかなかすすまない。



Esoritec SA-50 ... 32Bit D/A

むう…こんなものが発売になったそうだ。


☆銀行振込特価はお問い合わせください。☆ESOTERIC(エソテリック)SA-50【SACDプレーヤー】

「特価はお問い合わせください」ってのは何だが、まあ、さすがに私がおバカでもおいそれとは買えない値段だ… orz

エソリテックの製品ページはこちら。要はTEACの高級ブランド。ポイントは32ビットのD/Aコンバータを使用していること。部品は旭化成マイクロ(AKM)製だが、AKMではさらに上位の32ビットD/A、AK4399なんてのも出しているそうな。

この領域になると、いわゆるカタログスペックは意味がないと思うけど、SA-50のカタログによれば、S/N比は130dBだそうなので、32ビットにおける理論的なダイナミックレンジが192dBだか、差し引き62dB、ビット換算で10ビットくらいはノイズに埋もれていることになると思うのだけど、意味あるのかな・・・




芝刈り

芝の管理の記録

3週間ぶりくらいに芝刈りをする。刈高は、はじめ17.5mmにするが、繁茂具合があまりよくないので、途中から20mmに変更。育成の良し悪しがまばら。肥料が不足しているかもしれない。

しばらく手入れができなかったので、雑草が生え放題。



USB3 USBのDevconにいってきました

先週日曜日に帰ってきてから、休みなしで働いていました。機内検疫のあとは、徹底したアルコール消毒が必要ということで、毎晩遅くまで呑んだくれて、ブロ グの更新どころか「つばさ」のキャッチアップもままならない。さすがに「呑み疲れ」。罹患してる人いるわけだから、アクシュミな冗談はこれくらいにしてお きます。
一日早く帰った同僚や、同じ日に別のフライトで帰った同僚たちは、その後の健康状態を問い合わせる電話があったとのことだが、ワタシにはなし(ナゼだー?)。

それはともかく、USB.orgのDevConに行ってきました。場所は、(どの駅からも遠い)フォーシーズンズホテル。庭とか立派なので、外人は好きな んだろうが、不便なホテルだ。ただし、食事は旨かった。(前回のサンノゼのダブルツリーホテルは食事は「がっくし」だったがワインはダブルツリーの方が良 かったかな…)
USB3がメインだったが、内容的には前回のサンノゼとあまり変わらず、カンファレンスは退屈だった。その他はOTG2.0の話があったが、やっぱり普及しない気がする。PICT Bridgeに間に合わなかったのが敗因。
ショーケースでは、TIがUSB3.0のASSPを発表していた。また、MCCIがxHCI対応のドライバを Windows2000,XP,Vista,7用に用意できるとのこと。MSはWindows7SP1でドライバを提供するとのことなので、マザーボード やカードにドライバが付属する、というのが初期の形態になるのだろう。
インテル/AMDがさっさとSuperSpeedに対応する、xHCI付きチップセットを出してくれないことには、一向に普及しないだろう。来年後半かな?

ところで、xHCIはUSBのLow/Full/Hi/SuperSpeedのすべてに対応するのだが、Windows7の最初のリリースがxHCI用の ドライバを提供しないとすると、どうやってインストールするんだろう?SATA接続のDVDドライブが必須?それとも、EHCI/UHCIもレガシーインターフェースとして必要?

機内検疫

さて、NRTでは機内検疫があったのだが、ヒマだってんでどれくらい時間がかかるか測ってみたら、検疫管が機内に入ってから、降機の許可がでるまで、約35分というところでした。私は今回アップグレードで、1列目に座っていたので、ほぼ正確な時間です。基本的には全員のチェック(サーモカメラと問診表)が終わってから降機の許可を出すようです。
今回の機材はエアバスA330だったので、747とかではもっと時間がかかると思いますし、擬陽性の乗客がいれば、もっとかかるはずです。
ただ、チェックイン・バゲッジは検疫の間にカルーセルに出てきているので、通関までの合計時間はそれほど余計に時間がかかる、というわけでもありませんでした。

成田空港は空いてましたねー。連休後だし、豚インフルエンザの影響で渡航者が減っているのでしょう。では、では。

 

 



かえる

こちらは今土曜日の午前。いや~、ジェットラグもやっと収まって、これからバリバリだぜぇ~,というところだが、SFOに居る。日本に帰るんです。

帰りのフライトはビジネスクラス~っ♪飛行機のビジネスクラスってのは、金で買えるささやかかつもっとも確実なシアワセと思います。もちろん、身銭で乗ったことはないですが。ここ何年か、毎年一回はアップグレードされているので、「連続試合安打」みたいなものです(笑)。

今回はなぜかそういう気持ちにならず、買い物も全然せず。家内に頼まれたGuerlainの化粧水、(これか?)を免税店で買ったくらい。

【ゲラン GUERLAIN】スーパーアクア ローション 200ml【59%OFF!!】【楽天安値挑戦中!!】

ゲランといえば、メテオリットとか、ミツコ、ヴォルドニュィとかならいいけど、化粧水というと「ババァ・ブランド」(失礼)な気がするわけで、わが愚妻も「そういう歳になったのだなぁ」と変に感心してしまいます。(もちろん家庭平和のためにはそんなことは微塵ももうしませんが)

なにはともかく、日本に帰る。ああ、うまい蕎麦が喰いたいです…



7万人探偵「ニトベ」とメディアセンターの微妙な関係 (2)

録画用のソフトとして、XP MCEを主に使っているのですが、バグってるんですねー、これが。。。。もっとも使っているのはEPGだけなんですけどね。いわゆるキーワード録画が主なのですが、どう考えても引っかかるはずのない番組が録画予約に入ることが非常に多いです。

でも今回は、重複している番組はないのに、なぜか『7万人探偵「ニトベ」』が「重複あり」で録画できません。先週は気がつかなくて録画に失敗(orz)。今週は、失敗しそうなのがわかっていたので、サブ機の方で録画しました。メイン機は案の定失敗です。さらにナゾなのは、来週は問題なさそうなのです。

「これだけ手間かけて、録画してるのは、『ニトベ』かよっ!」というツッコミはなしね(笑)。忽那 汐里は、まあともかくとして、「六角精児」!(っていうか、山地)
同級生なのよ、実は。特に仲がよかった訳でもないし、むこうも覚えちゃいないだろうけど、深夜の30分枠ドラマとはいえ、タイトルロールの最後に名前が載るようになるとは、、、。「鑑識・米沢守~」も観にいかなくちゃ・・・



貧者のクラウド・コンピューティング、とは?

出張中は、通勤時間がほぼゼロなこともあって以外にヒマだ…

暇つぶし用に、録画してあるテレビ番組をポータブルのHDDに入れて持ってくるつもりだったが、肝心のHDDを忘れてしまいました。    orz

orbもナゼか調子が悪く、うまくビデオの視聴ができません。   orz

自宅のPCのファイルはHDのH264.tsなので、出張に持ってきているDell Latitude D410ではファイルは手元に持って来れても、CPUパワーが不足で満足に再生できません。 orz
nVidea IONとかが普通になって欲しい。。。

仕方ないので、teamviewerで自宅のまともなPCにログインし、TMPGEncで、SDのwmvファイルに変換、dropboxで手元のPCに持ってきて観る、というバカみたいなことをしています。

でも、これって「貧者のクラウド・コンピューティング」な感じがしないでもありません...



データベースの追加 RubyでPVRを作ろう!その12

データベースの使い道ですが、Windowsのメディアセンターは予約リストに加え、録画の履歴が保存されます。真似をして、録画が終了したデータや、重複など何 らかの理由で失敗したものも記録として残すことにします。ただ、無限に残しておいても仕方ないので、100位残しておけるようにします。これでデバッグが楽になるでしょう(なるといいな)。

ま た、進行中の録画に関しても別のデータベースに入れておくことにします。そうすれば、録画中にプログラムを止めなければならないハメになっても、レジュー ムできるでしょう(多分)。

こんな感じ?


#----------------------------------------
class SizedReserveDB < ReserveDB
  def initialize( workFolder, max = 100 )
    super( workFolder )
    @max = max
  end # def initialize( workFolder, max = 100 )

  def full?
    length() >= @max
  end # def full?
 
  def push( iEPG )
    synchronize {
      while( full?() )
        pop()
      end
      super
    }
  end # def push( iEPG )
end # class SizedReserveDB < ReserveDB



FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。