スポンサーサイト

--年--月--日 --:--

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

Spinel ver3.5.0.1 を公開しました。

2011年02月09日 21:50

クライアントごとにスクランブル解除のON/OFFを選ぶ機能を実装しました。
クライアントごとにON/OFFを選ぶためにはBonDriver_Spinelversion 3.4.0.0 以上が必要です。
古いバージョンのBonDriver_Spinelからも接続できますが、”スクランブル解除については特に希望がない(どちらでもよい)”クライアントとして扱われます。

version 3.5.0.* (2011/02/07)

  • クライアントごとにスクランブル解除のON/OFFをコントロールできる機能を実装しました。
    詳しくはSpinel.ini.defaultのDescrambleControlの項目を参照して下さい。
  • 設定ファイル(Spinel.ini)のEnableB25DecoderとEnableB1Decoderの項目を廃止しました。
    記載されたままだと起動時にエラーになるようにしてあります。
Download> Spinel_ver3.5.0.1.7z
MD5 | a0f78cf03b1d2cd1b080bb4160df234d | 225.9 KB |

BonDriver_Spinel ver3.4.0.0 を公開しました。

2011年02月09日 21:39

以前の記事で”クライアントごとのスクランブル解除ON/OFF機能はSpinel4で実装します”と書いたのですが、 大した変更でもないので実装してしまいました。

version 3.4.0.* (2011/02/05)

  • スクランブル解除済みTSを要求するかどうか選べる機能を追加しました。
    詳しくはBonDriver_Spinel.dll.iniのDesiredDescrambleControlの箇所を参照して下さい。
    この機能を使用する場合は、Spinelをversion 3.5.0.1以上にする必要があります。
Download> BonDriver_Spinel_ver3.4.0.0.7z
MD5 | 6c257ce04cc08d00b98050876588d118 | 87.5 KB |

Plex PX-W3PE 公式BonDriverについて

2011年02月07日 22:28

導入についての質問をコメントで頂いたので、公式BonDriver_W3PE(kumaさん版ではありません)とInterface_W3PE.dllについて、kumaさん版のソースを参考にしつつ調べてみました。

結論から言うと、Spinelのような1プロセスで同時に複数のBonDriverをロードするようなアプリケーションからは、おそらくまともに使用できないと思われます。
よって現状では公式版BonDriver_W3PEは非対応とさせて頂きます。

公式版BonDriver_W3PEが使えないのは何故ですか?

BonDriver_W3PEはInterface_W3PE.dllをロードし、そのインスタンスを生成してチューナの制御を行うわけですが、1つのInterface_W3PEインスタンスが同時に制御できるチューナは1個だけなのです。
さらにDLLのインスタンスというものは(同一のDLLファイル名である限り)1プロセスにつき1個しか生成できません。

BonDriver_W3PEを適当な名前にリネームして4個用意しても、そのBonDriverはInterface_W3PE.dllというファイル名のDLLしかロードしないため、4個のBonDriverは1個のInterface_W3PEインスタンスを共有する事になります。
1プロセスで4個のBonDriverを使って各々のチューナを同時制御しようとしても、どれか1つしかまともに動かない事になります。

EDCBやTVTest(RecTest)では問題無く使用できるのは何故ですか?

これらのアプリケーションは1プロセスにつき同時に1個のBonDriverしか使用しません。
複数チューナで録画したり視聴したりしたければその分だけ新規プロセスを起動する事によって対応するわけです。
プロセスを分ければその分だけInterface_W3PEインスタンスが生成されますから、上記の制限が障害になる事はありません。

ただしTVTestが(将来そのような機能追加があるかどうかは別にして)PinP等のマルチ画面同時視聴を実装するために、1プロセスで複数のBonDriverをロードしようとした時、この問題が大きな障害になると思われます。

似たような仕組みになっているBonDriver_PT-STは問題ないのかと思われるかもしれませんが、BonDriver_PT-STの場合はPTCtrl.exeのインスタンス1個だけで全てのPT1/2をコントロールできるように設計されています。
おそらくPlexの担当者はここまで考えてInterface_W3PE.dllを実装しなかったのだと思います。

BonDriver_W3PE_kumaだと問題無いのは何故ですか?

1プロセス内にDLLのインスタンスを複数生成するにはどうしたらいいかというと、単純にDLLをコピー&リネームして複数用意し、それらを個別にロードすればOKです。
勿論これ以外にも方法はありますが結構実装が大変だと思います。
余談ですがSpinelのBonDriverフォルダに、チューナの数だけBonDriverを用意しないといけないのはこのためです。
これに関してはまた機会があれば別に記事を書こうと思います。

さてkumaさん版(BonDriver_W3PE_kuma)は以下のようなアプローチで問題を回避しています。

  1. 操作したいPX-W3PEのチューナに付けられた一意な番号(以下チューナID)を取得します。
    具体的には0~7の値が得られ、これで2デバイス×4チューナ=8個のチューナを識別します。
  2. 文字列 Interface_W3PE にチューナIDを追加し、さらに文字列 .dll を追加したファイル名のDLLを探してロードします。
    つまりチューナID=0を担当するBonDriverはInterface_W3PE0.dllをロードし、チューナID=2を担当するBonDriverはInterface_W3PE2.dllをロードするわけです。
これで1プロセス内に複数のInterface_W3PEインスタンスが生成される事になります。
さらに各BonDriverのインスタンスには、それぞれ異なるInterface_W3PEインスタンスが1:1に対応付けられています。
それぞれ対応したInterface_W3PEインスタンスを個別に操作する事によって、1プロセスでもチューナを同時に制御する事が可能になります。

なんとかして公式版を使うにはどうすればよいですか?

要するに各々のBonDriverが同一ファイル名のDLLをロードしないようにすればいいわけです。
つまりロードするファイル名をどうにかして変えてしまえばOKです。
ロードするDLLファイル名を変えるにはどうすればいいかというと、BonDriver内に書かれている文字列をバイナリエディタで書き換えてやるのが手っ取り早い手です。

例えば"Interface_W3PE.dll"となっているところを、"Interfac0_W3PE.dll"等に書き換えてやります。
そしてオリジナルのInterface_W3PE.dllをコピーして、上記のファイル名にリネームします。
これをチューナ数分だけ繰り返せば、各BonDriverがロードするDLLは別々のものになり、理屈の上では何とかなるはずです。

Windows XP上でBonCasClientのB25Decoder.dllが動作しない理由

2011年02月06日 21:59

事の発端


2chのSpinelスレで以下のような書き込みがありました。
357 名無しさん@編集中 2011/02/06(日) 16:35:49 ID:0En4G8zO
(中略)

BonCasClient使ってみたけど一つ問題が。
Spinelを実行するOSがWindows 7だと問題なくSpinel経由でデコードされた映像を視聴できる。
WindowsXPだとクライアントが接続したときにB25Decoder.dllの読み込みに失敗してSystem.DllNotFoundExceptionで死んでしまう。

MainWindow.AppDomain_UnhandledException: 予期しない例外が発生
【例外クラス】System.DllNotFoundException
【エラー内容】DLL 'B25Decoder.dll' を読み込めません: このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。 (HRESULT からの例外: 0x800736B1)
【スタックトレース】
場所 Lapis.Spinel.B25Decoder.CreateB25Decoder2()

(以下略)

こちらのXP環境でも同様の現象が再現しました。
問題の切り分けのためEDCB単体で実験してみると、同様にB25Decoder.dllの読み込みに失敗します。
例外表示にある「DLL 'B25Decoder.dll' を読み込めません」の通り、BonCasClientのB25Decoder.dllに何か原因があるようです。

原因はなにか


必要とされるバージョンのMSVC++ 2005 SP1 ランタイムがインストールされていないのが原因です。
いやいやちゃんとランタイムは入れてるし、Windows Updateで最新の状態にしてるよ!となるかもしれませんが、落とし穴があります。
BonCasClientはversion 8.0.50727.4053のVC++ランタイムを必要とするのですが、VC++ 2005 SP1 ランタイムをダウンロードしてきてインストールしても、その後Windows Updateを行っても、そのバージョンは一向にインストールされません。
MSのサイトから手動でダウンロードしてきてインストールする必要があります。

解決するには


以下のサイトから vcredist_x86.exe をダウンロードしてきてインストールします。
これでversion 8.0.50727.4053のランタイムがインストールされて、XPでもBonCasClientが使用可能になります。

参考URL

Spinel ver3.4.9.1 を公開しました。

2011年02月04日 22:04

PX-W3PE向けの更新のほか、Windows Vista/7 でのサスペンド抑止機能がアップグレードされました。
BonDriver_Spinel側もversion 3.3.0.0 以上に更新して下さい。

version 3.4.9.* (2011/02/04)

  • SetThreadExecutionState APIをUIスレッド上で実行するようにしました。
  • OSがVista以降の場合、SetThreadExecutionState APIでES_AWAYMODE_REQUIREDフラグも指定するようにしました。
    これによりクライアントが接続している時は、スリープボタンを押してもシステムがサスペンド状態に移行しなくなり、かわりにAWAYMODE状態(画面と音声だけがOFFになった状態)に移行します。

version 3.4.8.* (2011/02/02) [未公開]

  • チューナパスの仕様を変更し、チューナ種別を頭文字だけで識別するようにしました。
    具体的にはTerraのかわりにT、SatelliteのかわりにS、ComboのかわりにCと指定できます。
    先頭1文字のみを取り出して比較しているだけなので、従来のチューナパス指定のままでも接続できます。

version 3.4.7.* (2011/02/02) [未公開]

  • BonDriverから返ってきたチャンネル名の先頭と末尾にある空白文字を削除してから、自動チャンネル識別するように修正しました。
    BonDriver_W3PE_Sが改行コードを含む変なチャンネル名を返す問題への対処です。
  • BS/CS110のサービスIDごとにチャンネル分けされるBonDriverに対応しました。
    加えてBonDriver_Spinelを最新版(ver3.3.0.0以上)に更新する必要があります。
    またPlex公式のBonDriver_W3PE_Sや、内蔵リーダーON設定のBonDriver_W3PE_S_kumaを使用している方は、TVTest等クライアントから見たチャンネル番号が変わるため、再度チャンネルスキャンを行う必要があります。
Download> Spinel_ver3.4.9.1.7z
MD5 | d5d30d84c78ae31a5dcb9b0580339818 | 224.9 KB |



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