Dies Aliquanti

スポンサーサイト

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

キャプチャソフト公開しました

やっと、Jimdoの使い方が判ってきたので、公開します。
こちらからどうぞ。

特徴

  • 複数のHD PVRデバイス対応
  • 入力解像度が変化した場合も追従
  • マルチスレッドにより相対的にロードが重い環境でも安定して動作

 ドライバのインストールのヒント もReadMeに入れました。



スポンサーサイト

芝刈り

刈高を7.5mmに落とす。まだ、去年の古い芝を刈っている感じ。

我が家の芝刈り機はこれ


_▲●春の新生活応援SALE開催中!●▲【送料無料!】Panasonic(パナソニック)庭園芝刈機(芝刈り機)▼EY2273P-W(白)
なのだが、3年目にして調子が悪い。刈高の調整のところが壊れた。バラしてみると、調整のメカがおかしいみたい。ノブを止めているねじを緩め、調整後ネジを締めれば問題ないようなので、それでいいことにする。



lsusb -v でデバイスのMaxPacketSizeとかを調べる

 Hauppauge HD PVRの簡易キャプチャソフトの話を前にも書いたけど、その後もチマチマと直したりしている。マルチバッファリングの個々のバッファのサイズはどれくらいが適切か?とか、アダプティブに変える?とか悩んでたのだが、よく考えてみればUSBデバイスなのだから、MaxPacketSizeが決まっているはず(あほくさ)。

問題は、どうやってMaxPacketSizeを知るかだが、WindowsでChapter9テストとかやればいいのだろうか?と思ったらこの手のツールはlinuxにはちゃんとあるんですね。
lsusb -v での結果をみると、512でいいようだ。

ついでに、キャプチャのプロセスの優先度を自分で上げるように変更してみた。もちろんroot権限で実行する分には問題ないのだけれど、chmod +s とかで、権限を与えても一般ユーザーではうまくいかない…ナゼ?。要調査

%lsusb -v
    (途中省略)
Bus 004 Device 050: ID 2040:4900 Hauppauge
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x2040 Hauppauge
  idProduct          0x4900
  bcdDevice            0.00
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower                4mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)

 



Atom+ION vs Geforce9300+C2D E7400

私にとっての本命のAtomとIONの載ったマザーボードが今週中にも発売されるらしいが、デュアルコアの330の方は30000円弱になるという…  orz

この値段だと、GeForce 9300のマザーボード

高性能グラフィックス機能内蔵チップセット『GeForce 9300 mGPU』採用高性能グラフィックス機能内蔵 マイクロATXマザーボード MSI P7NGM-Digital

とE7200あたりの方が安い。Mini-ITXにこだわるとしても

nVIDIA GeForce9300チップセット搭載 IEEE802.11b/g WiFi搭載 LGA775対応 MiniITXマザーボード【ZOTAC】GeForce 9300-ITX WiFi GF9300-D-E
これあたりの値段を考えると、びみょ~・・・・

Atomならファンレスだが、ケース全体も含めて完全ファンレスには一工夫必要だろう。そうするとやっぱりGeforce9300のほうがいいような・・・悩ましい。



UbuntuにVMplayer

玄箱HGのパフォーマンスの低さに業を煮やし、目的が変わって使わずにほっておいたマザーボードにUbuntuデスクトップ(8.0.10)を入れてみました。もちろん快調。
このPCはRegzaの録画用NASとして、Sambaをいれ、Hapupauge HD PVRも2台つないであります。C2D E7200+メモリ2Gなのでまだまだ余裕がある状態です。
 もったいないので、ubuntuをホストOSにして、VMPlayer(2.5.2)をいれ、Windows XPをゲストOSにしてみました。
VMWareのダウンロードページには、.rpmというファイルと.bundleというファイルがあります。.rpmはRedHat系のパッケージのようです。ubuntuはdebian系なので、apt-getで取得できるパッケージがあれば簡単なのですが…調べてみると、.bundleの方で良いようです。早速ダウンロードして、viで開いてみると、シェルスクリプトのようですが、ファイルの後半の方がバイナリになってますね。時々見かけるlinux用の自己解凍プログラム/スクリプトのようです。

 早速、実行権限を設定して、デスクトップのターミナルから実行するとGUIで設定してインストールは簡単にできました。別途用意したWindowsのVMを起動するとまったく問題ありません。ただ、X-Window上で動かすのはちょっともっさりしていて、ゲストOSのWindows上でリモートデスクトップ(RDP)のサービスを動作させて、LANの別のPCからアクセスするのでもパフォーマンスは変わらない感じ。だったらRDPの方がいいですね。

ついでに、TeamViewerとWOLのプログラムもゲストOSに入れて、快適に動作を確認。(もともとのホストOSはRegzaの録画用に電源入れっぱなしなので、)これで、家の外からも家庭内のPCを自由に使えるようになりました!



芝刈り

今年2回目の芝刈りを実施。
刈り足は10mm
芝刈り機の歯がダメになりかかっているのか、一気にはここまで下げられず、2回芝刈りをかけることに。この時期刈っているのは、去年の枯れた芝…今年の育成のためにはできるだけ刈り足を下げたい。



2本挿しに挑戦

Hauppauge HD-PVRのLinuxでキャプチャですが、2台あるうちの一台がイマイチ。WindowsXPをホストOSとして、ubuntuをVMPlayer上で動かしている方がなぜか安定しなくなってしまった。症状としては、デバイスからの読み出しができない(一度HHDPVRの電源を切れば問題なし)かったり、ホストOSそのものの挙動がアヤシクなったり…
以前は、3ヶ月以上、快調だったのですが、どうしても元にもどりません。仕方ないので、フツーにubuntuデスクトップが動作している、もう一台の方に移して、「2本挿し」に挑戦してみました。

結果として、あっさり何にも問題なく動作しました。もちろん同時キャプチャもできます。複数同時にキャプチャはWindows用のオマケソフトではできない(はず)なので、これはウレシイ



bash の()のPIDは?Bashではまるシリーズ (2)

 まえにbashスクリプトでそのスクリプト自体をバックグラウンドで実行するには、

#!/bin/bash
(
 やりたいこと
) &

でできるという話を書きましたが、()カッコのなかは、サブシェルで実行されるので、ことなるPID(プロセスID)を持つはずです。今日のお題はこれを取得するには?です。

普通にやってみる。

% cat ./test1.sh
#!/bin/bash
echo $$
(
    echo $$
    sleep 10
) &

% ./test1.sh
3650
3650

% ps
   PID TTY      TIME CMD
 12337 pts/5    0:00 csh
  3652 pts/5    0:00 sleep
  3653 pts/5    0:00 ps
  3651 pts/5    0:00 test1.sh
%

うまくいきませんね...親シェルのPIDと同じ...
要はシェルスクリプトを親用、子用でわけてしまえばいいわけだから、

% cat ./test2.sh
#!/bin/bash
echo $$
./test2_sub.sh &

% cat ./test2_sub.sh
#!/bin/bash
echo $$
sleep 10

% ./test2.sh
3712
3713

% ps
   PID TTY      TIME CMD
 12337 pts/5    0:00 csh
  3714 pts/5    0:00 sleep
  3713 pts/5    0:00 test2_su
  3715 pts/5    0:00 ps

うまく、いっているようです。ファイルが2つに別れているのはイマイチ・・・

evalを使ってみる、

 % cat ./test3.sh
#!/bin/bash
echo $$
(
    eval echo \$\$
    sleep 10
) &

% ./test3.sh
3805
3805

% ps
   PID TTY      TIME CMD
 12337 pts/5    0:00 csh
  3807 pts/5    0:00 sleep
  3808 pts/5    0:00 ps
  3806 pts/5    0:00 test3.sh

キーっ、うまくいかない。orz
こうなりゃ () なんか使わないで、 ヒアドキュメントで直にbashに喰わせてやるっ!&はどこに書けばいいんだっ?!

% cat ./test4.sh
#!/bin/bash
echo $$
/bin/bash << EoS &
    eval echo \$\$
    sleep 10
EoS

% ./test4.sh

5257
5258

% ps
   PID TTY      TIME CMD
  5260 pts/5    0:00 ps
 12337 pts/5    0:00 csh
  5259 pts/5    0:00 sleep
  5258 pts/5    0:00 bash

 

はぁ、はぁ・・・うまくいったみたい・・・

ほんとうはどうやるの?



IV-R1000買いました


日立 iVポケット搭載 デジタルチューナー 【Wooo】 IV-R1000  地上波/CS110・BSデジタルチューナー内蔵 iVDR-S ビデオレコーダー 【送料無料】【あす楽対応_関東】

IV-R1000買いました。Hapupauge HD-PVRのチューナー用です。簡単にレビューのそのまえに…

「ちくそー、こんなもの、こんなもの、こんなもの~っ! こうして、こうして、こうしてくれるわっ! ハァ、ハァ、ハァ・・・」

取り乱して、すみません・・・
BufferloのLT-H90DTVはあきらめることにします。

わたしが遭遇した問題。
(1)   電源を入れっぱなしにしておくと、数日で固まる。D端子経由だが、絵が止まったままになったり、青一色になる。
(2)   地上デジタル受信時に、チャンネルを変えると、「受信状況を確認しています」のメッセージがでて固まる。

AC電源入力をはずし、再度接続すると以上の不具合からの復帰する。

(3)   AC電源入力をはずし、再度接続すると、S/PDIF出力(設定は「パススルーなし」)がでない場合がある。

(4)   地上D⇔BS(CSはチェックしていない)の切り替え時にメッセージが表示され(メッセージはメモし忘れ)、2分近くたっても切り替わらないことがある。(まれに起きる)

(5)   トップメニューで、テレビ視聴とLinkTheaterモードを行き来しようとすると、異常に時間がかかる(一度リモコンとかで電源を切って、入れなおす方が早い)。

(6)   不具合とはいえないのかもしれないが、放熱設計が間違ってると思う。待機状態にしておいても筐体が結構熱くなる。金属ケースなのはいいが、せめて、「スリット」をつけておいてほしかった。(1)の不具合は、熱のせいじゃないかと邪推。

もちろん、使い方によってはダメ商品ではのないかもしれないけど久々に地雷踏んだ。 
「どんな駄馬でも乗りこなしてみせる」というプライドもちょぱみじんに打ち崩された感じのする、LT-H90DTV。人にはとても薦められない。とりあえずバッファロー問い合わせはするけど、ダメでしょうな・・・オレの青春(=金と時間)を返して欲しい。 orz.

人生は短いので、チューナーを買い換えることにしました。まさに、安物買いの銭失いです。でも、単体のチューナーって少なくなってんですよねー。
地デジ/BS/110°CS対応、ディジタルオーディオ出力、D3/4映像出力、HDMI出力で安い方から探すと、次は、YAGIのDCT110あたりなんだけど、これもあんまり評判よくないみたい。「魔改造」の材料にはなるみたいだけど。
いっそのことHDレコーダーを買う方がイイのだけれど、HDD壊れるとチューナー単体としても使えないだろうし・・・起動遅いらしいし・・・

で、日立のIV-R1000。メーカーサイトをみると、もう製造中止。新製品が出るのかもしれないが、iVDR-Sもそれほど流行っていると思えないので、このままディスコンかな。実勢価格では28000円を切っているところも簡単に見つかります。ちなみに、iVDR-S自体は、まったく興味無しです。HDDカートリッジがちっと高価すぎ。自分でHDDを交換できるカートリッジでも出れば話は別ですけど。

以下、簡単な感想

(1) 思ったよりでかい。LT-H90DTVより長さが少し短く、幅は1.3倍、高さは1.5倍くらい。ACアダプタなので、結構、実質的な体積でかい。
(2) Hauppauge HD-PVRでキャプチャした画像(D4)同士で比較しても、LT-H90DTVより綺麗。HDMIはやってない。
(3)そこそこ暑い。正面から向かって、右奥側の天板と底板がそこそこ熱を持つ。ちなみにファン付。ファンの音は、何台かPCが動いている私の部屋では、聞こえないけど、環境によっては、気になるかも。でも、LT-H90DTVよりマシ。
(4)BCASカードが出っ張る。orz。子供のいるうちでは困るんではなかろうか?なに考えてんだろう?


2日ほど使っただけだが、安定感はさすが、家電の老舗Hitachiという感じ。家電業界が儲からない、という状況に対して「オーバークオリティ」と揶揄する向きもあるが、LT-H90DTVでの苦労を考えると、「オーバークオリティ」大歓迎。



「未来時計」のはかない「未来」

 え~、今日のお題は「未来時計」です。PCでテレビの録画をしているとPCの時計(結構狂う)あわせが気になります。わたしはメインの録画ソフトはWindows XP MCEのメディアセンターを元にしています。っていうか、メディアセンターの録画開始を別のプロセスで監視して、録画開始を検出したら、Hauppauge HD-PVRで録画開始(チューナーの制御はメディアセンター任せ)という、「ドン臭いこと」をしています。

メディアセンターでは、単独の録画に関して、数分前に録画開始、数分後に停止というような設定ができるのですが、ある録画の終了と次の録画の開始が同じ、つまり2つの録画が連続している場合には、あとの録画の3秒くらい前にチューナーの制御と録画の切り替えをします。結果としてHD-PVRでの録画は頭が1~2秒程度切れてしまうことがあります。気にしなければいいのですが、ちょっとねぇ・・・多くの録画用ソフトも本質的には同じ問題があると思うのですが、皆さんどうしてるのでしょう?

インターネットを利用したPCの時計あわせとしては、NTPとかあって、「桜時計」とかが有名でしたし、net time コマンドでも時計合わせできますが、正確な時刻にPCの時計を合わせてしまいます。こんなページもありますね。

わたしがやりたいのは、要は、「PCの時計を本来の時間より30秒程度進めておく」ことです。何年も前に考えたことがあるのですが、

案(1)
NTPのクライアントなりサーバーソフトを、いじってウソの時間をPCに設定する→linuxならntpdのソースコードもあるけどWindowsでは・・・NTPってUDP使ってるらしいし、soketを使ったプログラミングなんてわかんないし、で挫折

案(2)
録画ソフトがシステムの時刻を参照する際のWindowsへのシステムコールをトラップして、ウソ(30秒くらい先の)の時間を返す。リバースエンジニアリングのページに非常に参考になることが書かれていますが、あまりに面倒くさそうで挫折。

でも、よく考えたら、秒単位での正確さを求めなければ、「ネットワーク内の別のPCにログインして、time /Tとかdate +%H:%M:%Sを実行して、返ってきた時刻に30秒足して、PCの時計をセットすりゃいい」と気づきました。TeraTermのマクロとかつかえばなんとかなりそう!なんて、思って、ツールの名前も「未来時計」に決定です(うぉ~っ、なんかやる気でてきたぞっ)。

Teratermのマクロと小一時間格闘した結果を最後に張っておきます。これでWindowsからUbuntuにログインして時刻を取得、30秒WindowsのPCの時計を進めてセットできます。予約録画に悪影響しないように、ハンパな時間にセットすることを念頭に毎時17分にセットするようにしています。
でも、もう一度インターネットをしらべてみたら、adrasteiaが見つかりました。これでやりたいことはできてますね。   orz

 

;
; FutureClock for Teraterm macro
;
; (c) 2008-09 BO
show 0   ;  *** minimize window

HostName='xxxx'
Username='xxxxxxx'
Password='xxxxxxxxx'
sprintf '%s@%s:' Username HostName
Prompt=inputstr

timeout=5
while 1
;  *** making up params for 'connect' command
    connectParam=HostName
    strconcat connectParam ':22 /2 /ssh /KR=UTF8 /KT=UTF8 /auth=password '
    strconcat connectParam ' /user='
    strconcat connectParam Username
    strconcat connectParam ' /passwd='
    strconcat connectParam Password
    strconcat connectParam ' /V /timeout=5'
; *** open Tera Term and connect to the host
    connect connectParam
    if result=2 then
        wait Prompt
        sendln 'date +%H:%M:%S'
        recvln
        waitregex '([0-9]*):([0-9]*):([0-9]*)'
        str2int hh groupmatchstr1
        str2int mm groupmatchstr2
        str2int ss groupmatchstr3
        sendln 'exit'
        if mm=17 then
            ss=ss+30
            if ss>=60 then
                mm=mm+ss/60
                ss=ss%60
            endif
            if mm>=60 then
                hh=hh+mm/60
                mm=mm%60
            endif
            sprintf "%d:%d:%d" hh mm ss
            ; messagebox inputstr 'new time'
            settime inputstr
            interval=60*60
        else
            interval=(17-mm)*60-ss
            if interval<=0 interval=interval+60*60
        endif
    else
        interval=60*60
    endif
    pause interval
endwhile

 



FC2Ad

まとめ

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