◎正当な理由による書き込みの削除について:1レス¥5000円 1スレ¥20000円の技術作業料が発生します。一回分だけの料金で当方管理下の全サイトで作業が実施されます。支払い方法はAmazonギフト券番号。連絡先は当サイトの登録emailへ。

BonDriver共有ツール総合 その2©2ch.net ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://2chb.net/r/avi/1428405907/
ヒント:2chスレのurlに http://xxxx.2chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1 : BonDriver共有ツール総合

※前スレ
http://peace.2ch.net/test/read.cgi/avi/1366339738/

2 : スレ立ておつ

3 : BonDriver共有ツール総合

◆ Spinel
MPEG2-TSを出力するTVチューナを複数のアプリで共有するためのサーバです。
別途BonDriver_Spinel.dllを使用すれば、BonDriver対応アプリからすぐに使うことが出来ます。(本体Readmeより)

- 公式サイト - http://lapislabs.blog24.fc2.com/
- 対応製品 - BonDriverが利用できるもの全般
- 入手方法 - サーバー公式サイトより入手可能。


◆ BonDriverProxy / BonDriverProxyEx / BonDriverProxy_Linux
他のBonDriverへTCP越しにプロキシ接続するだけのツールです。
機能の少ないSpinelみたいなとりあえず軽くシンプルにを目的
Exでは、サーバ側にBonDriver自動選択機能を追加

- ソース - https://github.com/u-n-k-n-o-w-n/
- 対応製品 - BonDriverが利用できるもの全般
- 入手方法 - 以下のサイトより入手可能。
https://drive.google.com/folderview?id=0B-b35lIwjw6ybzV5QU9DWkJLUWc

4 : ・VirtualPT
VirtualPTはアースソフトPT1・PT2等のチューナーをラップし仮想チューナーを公開するサービスアプリケーションです。
BonDriverインターフェースに対応しているアプリケーション(TVTest(TV視聴)、TVRock(TV録画)、EpgDataCap_Bon(TV録画)等)でお使いいただけます。(公式サイトより)

- 公式サイト - http://blog.livedoor.jp/domamemo/
- 対応製品
EARTHSOFT PT1/PT2/PT3 (PT3は1.11以降)
PLEX PX-W3PE/S3U/W3U2/W3U3 (いずれも1.09以降)
- 入手方法 - 「VirtualPT_0118.zip」を最後に公開停止。ググれ。


・RemoteTuner / BonDriver_RemoteTuner
ソース付き、2Kとかの古い環境でも動く
Spinel使ってみたいけどXPで.NET Frameworkなんて入れたくない人とか
ソースいじって自分好みに改造して使いたい人向け?

- 公式サイト - http://www.pine.mynetwork.org/WebNote/Note.aspx?gr=DTV&id=1ZTUKFU6F96L8
- 対応製品 - BonDriverが利用できるもの全般
- 入手方法 - サーバー公式サイトより入手可能。

・BonDriver_RDCT ( BonDriver_Reduction )
BonDriverのカプセル化、BonDriver_SpinelをEDCBで利用時のマジックパケット対策等
- 公式サイト - なし
- 対応製品 - BonDriverが利用できるもの全般
- 入手方法 - http://www1.axfc.net/uploader/search.pl?search_str=BonDriver_RDCT&sort=1&sort_type=uid&sort_m=DESC より入手可能。

5 : 前スレ>>968さん
とりあえずやっつけですがBonDriver_Splitterと言うのをつくってみました
https://drive.google.com/folderview?id=0B-b35lIwjw6ybzV5QU9DWkJLUWc

このBonDriverのあるスペース/チャンネルを、別のBonDriverのどのスペース/チャンネルに割り当てるかを
設定ファイルで指定する方式です
スプリッタ機能を使う場合は、更にサービスIDを指定する必要があります
その際、指定されたBonDriverのスペース/チャンネルからのTSストリームに指定サービスIDが含まれているか
どうかのチェックなどは行っておらず、単に指定されたサービスIDのデータをそのTSストリームから
取得しようとするだけなので、設定を間違えると全くデータが送られてこなくなります
こまかな使い方は設定ファイルのサンプルの中をみてください
一応サンプルにはBonDriver_PTを使う設定例を書いてるので、BonDriver_PTやBonDriver_PT3を使ってるなら
多分そのまま使えるんじゃないかとは思います…

6 : なお、チャンネル変更時にBonDriverの切り替えが発生する場合には、まず現在使用中のBonDriverを解放して、
切り替え先BonDriverをロード->CreateBonDriver()->OpenTuner()->SetChannel()とやるようになっています
この為、一応機能上は3波とか4波とかにも出来はしますが、BonDriver切り替えを伴うチャンネル変更のレスポンスは、
結局手で切り替えた場合と同じです
#この切り替え処理のどこかでエラーになった場合は、アプリにはチャンネル変更失敗として返ります

また、BonDriver_Proxy等のクライアント側BonDriverを読み込ませた場合、他のクライアントの
チャンネル変更に引きずられると、対象サービスIDがストリームから消滅する事になると思うので、
その様な状況が起こり得る環境でクライアント側で使う場合は、スプリッタ機能は使用しない方が無難でしょう
#そもそもこの機能の用途はネットワークトラフィックを削るとか、サーバ側でCAS処理実装してる場合の
#カードへの負荷削減とかでしょうから、クライアント側でサービス指定したい事なんて無い気もしますが…

当方的には、
・サーバ側で使う場合はスプリッタ機能を有効にして読み込むBonDriverとは一対一の関係に
・クライアント側で使う場合はスプリッタ機能は使わない
・読み込むBonDriverをまとめるのは視聴用のアプリに使う時だけ
辺りが無難な使い方かなと思ってます

7 : >>5
うおぉぉぉ〜!前スレ968です!ありがとうございます!
サービス指定以外にBondriver統合までとはすごいです。

とりあえずiniをえっちらおっちら設定してローカルで確認しただけですが転送量の減少を確認しました!
目視ですが、CSは劇的に数分の1、BSはチャンネルによってですが3〜4M、そして一番使う地デジが1〜2M軽くなっています!
地デジはサービス限定しても変わらないかなと思っていましたがワンセグを削っていただけたのですね、ありがとうございます!

ちょっと気になった点としましては、まだiniのDELは空白のままなのですがTvTest0.9のチャンネル選択の横に番組名がでません。
これからじっくり煮詰めていこうと思います(TOTは絶対必要なのですが選択できるようになっていてうれしいです)
BondriverProxyとの連携もゆっくり試していこうと思います。取り急ぎ動作確認ということで。本当にありがとうございました。

8 : BonDriver_Splitterだけど「1チャンネル1サービスモード」無効にして使えてる人います?
有効にすると無問題だけど無効にすると以下のメッセージが表示されエラーに・・・。

"BonDriver_Splitter_TS3.dll" が読み込めません。
エラーコード: 1114
Windowsのエラーメッセージ :
ダイナミック リンク ライブラリ (DLL) 初期化ルーチンの実行に失敗しました。

BonDriver_Splitter.iniの
> 1チャンネル1サービスモードで使う場合の設定例
の一覧をコメントアウトして
> 1チャンネル1サービスモードを使わない場合の設定例
に付いていたコメントアウトは削除したんだけど、何か見落としてるのかなorz

9 : BonDriverProxyExがだいぶ更新されているので久しぶりにb25。

http://pastebin.com/832ADATk
Credit goes to deadbeef2

10 : >5
PT2x64とTVTestx64で使ってみようとしたけど
チャンネル切り替えを受け付けないエラーでチャンネルスキャンもできない。
すべてデフォルトなんだけど何がおかしいんだろう。

11 : >>7
地デジで削れるのは、ワンセグ分もありますがどっちかと言うとデータ放送削ってる影響の方が多いのかなと
#と言うか、データ放送を残すかどうかをオプションにするのを忘れてました(;´Д`)必要そうなら追加しますが…

>>8
恐らくですが、[OPTION]のUSESERVICEIDを0に変更し忘れているのではないかと…
設定ファイルパースの段階で明らかに間違っているのがわかった場合は、dll自体を読み込めなくして中途半端に
動いてしまわないようにしているのですが、USESERVICEIDが1の状態で
> 1チャンネル1サービスモードを使わない場合の設定例
を使おうとするとサービスID指定が足りないので必ずエラーになるようになってます

12 : >>10
当方でも、PT2のドライバとSDKを古いのでテストしてた時、BonDriver_PTで使うとBonDriver_PTのOpenTuner()が
時々失敗する事があり、原因を追ってみるとPT1/2 SDKのEARTH::PT::Device::Open()が失敗していました
#STATUS_DCM_SHIFT_TIMEOUT_ERRORが返ってきます
SDK内部でのエラーなのでどうしたもんかと思ってたんですが、とりあえずPT2のドライバとSDKを最新版に
更新してみたらそれ以来再現しなくなっています
もしまだ古いドライバ/SDK使ってるのなら、試しに最新版に更新してみるとどうでしょうか

またなんとなくですが、PT1Ctrlをサービス登録すると大丈夫かもと思ってますが、未確認です

13 : >>11
USESERVICEID=1→USESERVICEID=0 に変更したんですけどねえ・・・肝心な事書き忘れてすみません。
作者さんの環境で再現しないという事は、こちらの環境に問題があるのかもしれませんね。
返信ありがとうございました。

14 : >>9
よく理解できないんだがこれどういうん?

15 : >>14
BDPexでb25をデコードするためのパッチ。
実際のビルドには前スレ869のlibarib25が必要。

16 : >>15
過去スレ読んだけどよくわからん。
最新ビルドで問題なく動いているから大丈夫なのか。

Spinel経由でEpgsrvが落ちるのと関係ないよね?

17 : >>9
前回のパッチを参考に追加ファイルをプロジェクトに含めて、[追加の依存ファイル]追記したら無事ビルド出来ました。ありがとう。

18 : >12
一応SDKをインストールしなおしたりしたのですがダメでした。
TVTestのログで「チャンネル変更がBonDriverに受け付けられません」
になります。

同じ環境でBonDriverProxyは問題なく動いてます。というか、同じフォルダに
Spiliterを入れて試してます。

すごい便利だと思うのでぜひとも使いたいのに・・・

19 : PTCtrl.exeをサービスに登録してみましたり、x86で環境構築しなおしたりしましたが
ダメでした。

PT2のBonDriverはhttp://www3.wazoku.net/2sen/pt1up/source/up0305.zipのを
使いました。

20 : >>19
使用するBonDriver〜.ch2内のチャンネル欄の値をBonDriver_splitter.iniの「対象BonDriverでのチャンネル番号」に記入してみたらどうでしょう

21 : >>19
BSでの問題でしたら
http://up.mapopi.com/
にある「36.rar BonDriver PT-ST 人柱版3(up0305)(新BS対応) 」を使ってみたら。
地デジでしたらどちらでも良いかも。

22 : >>19
下記のポイント2はどうでしょうか。
難視聴は消して良いと思いますが。
http://www.thetabatas.com/hideaki/wp/?p=508

23 : すみません、よく考えるとどこにも書いて無い事が2点ありました(;´Д`)
・iniファイルの命名規則はdllモジュールのファイル名の拡張子をiniに変更した物
・設定ファイルの記述はUTF-8で
です

あと、エラーがあっても原因がわかりにくいので、エラーが起こった時はエラーログを吐くようにしました
エラーログはOutputDebugString()で吐いてるので、上手く動かない方はDebugView等でそれを確認すると
理由がわかるかもしれません
https://technet.microsoft.com/ja-jp/sysinternals/bb896647
ついでにあった方が良いなと思った排他ロックを追加しました
#複数スレッドから非同期でSetChannel()呼ぶ的な、良くわからない使い方された時にしか影響無いと
#思いますが、念の為…
https://drive.google.com/folderview?id=0B-b35lIwjw6ybzV5QU9DWkJLUWc

24 : >>13
もしかすると、上記「設定ファイルの記述はUTF-8で」が関係しているかもしれません
Windows環境では大抵のエディタではShift_JISが標準になってると思うので、もし新規にファイルをつくって
サンプルからコピペしてるとShift_JISになってしまっている可能性があるかもしれません
一度その辺りを確認してみてもらえないでしょうか?

>>18-19
他の可能性としては、BonDriver_Splitterから、指定されたBonDriver_PTが見つけられないのかもしれません
よく考えると読み込むBonDriverが指定された場所に本当にあるのかどうかの確認はしていないので、
このパス指定で見つけられないパスが指定されていると最初のチャンネル変更時にエラーになりそうです
---
[BONDRIVER]
00=c:\path\to\BonDriver_PT-S0.dll
---
みたいな感じで、フルパス指定にしてみるとどうでしょうか?

25 : >24
フルパスでいけました!
BonDriverはすべて同じフォルダに入れていたので問題ないかと思ってました。

可能ならSplitterと同じフォルダは自動で探すようにして、BonDriverが見つからない場合は
エラーを出すようにしていただけたら嬉しいです。
PT-S PT-S0
とかちょっと紛らわしいところもありますので。

26 : あ、相対パスも指定できるとさらにうれしいです。

27 : いろいろ試して見たところ、PT2にて以下の問題がありました。
1.TVTestでチャンネルスキャンするとNHKEが2つ(同じもの)が登録される。チェックマークも2つに入る。
2.TOKYO MX1が2つ登録される。ただし、MX1の片方は実際にはMX2である。
3.チャンネルスキャン後、すぐにチャンネルをNHK総合にすると映らない。
4. CSでチャンネルスキャンするとすごいことになる。

1. については片方のチェックマークを手動で外せば特に問題にはなりません。
(チェックしたままだとTVTYestウインドウ下部のステータスバーのチャンネルを
クリックするとNHKEが2つ表示される)
2. ステータスバーのチャンネルをクリックするとMX1が2つ表示され、MX2が表示されないため
MX2の方の番組名が見れないというのが不便です。
3. はチャンネルに限らず、チャンネルスキャン後すぐのテレビ番組(チャンネル変更)に問題が
ある感じです。バッファの関係かとも思いますが、チャンネル変更以外でもたまに映らない
ことがあるように思います。
4. 原理上仕方ないのかもしれません。

28 : 上記2-4はTVTestのチャンネルスキャンの実装によるところかもしれませんが、
2,3については、結局どれを選択してもきちんと映るのに対し、
4については各ちゃんねるが4つずつ登録され、そのうちきちんと映るのは1つのみ
という状況です。

29 : >>25-28
そう言えばアプリとBonDriver_Splitterを同じフォルダに置いてる場合しかテストしてませんでした(;´Д`)
#その場合は相対パスでも機能します
dllをロードする時の基準パスがBonDriver_Splitterではなく、アプリ本体になるからでしょうね
これを変更するなら、BonDriver_Splitterからの相対パスしか使えなくするか、あるいはフルパス指定っぽい時だけは
フルパスとして扱うと言う泥臭い事をやるかでしょうか…
BonDriverとして指定されたファイルに関しては、とりあえず初期化時に存在確認するのだけは追加しようと思います

30 : >>27の1,2,4は全部同じ理由で、SDTは無編集で流している事と、TVTestのチャンネルスキャンの実装からですね
https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux
でUSESERVICEID=1の場合に付いて書いているのと同じです
要は、本来複数のサービスが含まれているTSストリームを分割して別ストリームとして流しているけど、そのストリームに
含まれてるのはこれこれのサービスですよと言う情報は変更していないので、そう言う事になってます

TVTestからなら、右クリック->設定->チャンネルスキャンのところで、「チャンネル」に自分の設定した
チャンネル名が見えるので、それとTVTestが検出したチャンネル名である「名前」があっているもの以外は
無効化すれば、それ以降は実用上問題無くなるんじゃないかと思います
#自分の設定したBonDriverとしてのチャンネル番号と比べながら、ch2ファイルを直接編集でもOKです

3に関しては、デコーダやレンダラ等のTVTest側の設定も影響してそうです
もしその状態で、右クリック->リセット->フィルタグラフ再初期化をやったら映るようになるなら、
多分BonDriverとしては関知できない部分ですね…

31 : >>24
iniの文字コードはUTF-8 BOMでした

デバッグのログ
BonDriver共有ツール総合 その2©2ch.net ->画像>1枚

iniの中身
http://notepad.cc/share/3ZXwTpspc4

不備がありましたら指摘していただけると助かります。

32 : BonDriver_Splitterだけど、ロケフリっぽいアプリを自作しようとしたときに便利かも。
RecTaskとかを使ってサービスを分離する必要がなくなる(と思う)

33 : >>31
多分原因わかりました
まず、setting error(column num)と出るのはチャンネル定義の右辺の入力カラム数が足りなかった場合です
文字化けしてますが、BS朝日の行ですね
で肝心のこうなる理由ですが、BOMが付いてるとファイル先頭の[OPTION]がGetPrivateProfileXXX()APIに
セクションとして認識されないようです(;´Д`)
この為、[OPTION]セクションが存在しないように見える為、USESERVICEIDがデフォルト値の1として扱われ、
結果上記の状態になっているのだと思われます

対策としては、iniをBOM無しで保存するか、"[OPTION]"をファイル先頭ではなく2行目以降に書いてみて下さい

しかしAPIにこんな豪快な罠があるとは…
> iniの文字コードはUTF-8 BOMでした
と言う情報が無ければ迷宮入りしてもおかしくない事案でした(;´Д`)

34 : >>33
ありがとうございます! チャンネルスキャンまで漕ぎ着けることができました m(_ _)m

35 : BonDriver_Splitter、ありがとうございます。BonDriver_proxy経由でも問題無く見ることができました

一点だけ、MX2を選局するとMX1になってしまいます。MX2がMX1のサブサービスと判断されて削られてる印象です
>>27さんとは違ってTVTestのチャンネル選択のとこにMX2と番組情報が表示されてはいます

まだ、PSI/SI指定削除はいじっていないのですが、相当軽くなっている感じです
どれだけ軽くなっているのか比べてみたいな〜、転送量の平均値か合計値を出してくれるようなプラグイン無いでしょうか

36 : >30
なるほどそういう理由でしたか。
確かにLinuxの方の板でもChinachuで同様のことを報告されている方が
いらっしゃいますね。
もしお時間があったらSplitterの方でSDTを自動で編集するような機能を
盛り込むのを検討いただけたら嬉しいです。

フィルタグラフ最初期化に関してはさらにテストしてみます。

37 : MX2のことは>>30に書いてありましたね、気付かずに失礼しました

38 : ☆ 日本の核武装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆

39 : bondriver _splitter、地方なので地デジの方を書き換える必要があるんですが、対象Bondriverでのチャンネル番号というのがどこを参照すればいいのかのか理解できないという

40 : TVTestのch2ファイルに記述されているサービスの並び順でいいんじゃない?

41 : >>39
>>40さんの言う通りで、読み込ませる対象のBonDriverに対してTVTestがつくったch2ファイルを
参照するのが一番簡単だと思います
例えばch2ファイルのNHK総合の部分が
---
; TVTest チャンネル設定ファイル
; 名称,チューニング空間,チャンネル,リモコン番号,サービスタイプ,サービスID,ネットワークID,TSID,状態
;#SPACE(0,地デジ(UHF))
NHK総合1・東京,0,14,1,1,1024,32736,32736,1
---
だったとすると、
「チューニング空間」が対象BonDriverでのスペース番号、「チャンネル」が対象BonDriverでのチャンネル番号、
「サービスID」が対象サービスIDにそれぞれ該当します
なのでこの場合、0、14、1024ですね

42 : >>41
わかりましたthx

43 : Bontsdemuxって
GUIではできるのに
ラインモードだと分離できないってことが多いような。
使い方間違ってんのかな???

44 : >>43
それこのスレと全く関係のないツールだろ

45 : BonDriverProxyExに>>9のB25パッチをあてたやつで
iniでB25_DECODE=0
としてB25デコードを無効にした状態でTVTestを起動して終了させると、
終了した瞬間に必ずBonDriverProxyExが落ちます。
TVTest側のB25デコードの有無はどちらでも同じ。
TVTest0.9.0-dev最新、0.8で試しましたが同じ。

B25_DECODE=1でB25デコード有効の時は問題ありません。
パッチを当ててないものも問題ありません。

チューナーはDY-UD200でBonDriver_dyud 8.5.3です。
他のチューナー(PX-W3U3)で試したら問題なかったのでDY-UD200固有の問題のようです。
B25を使うためにパッチあててるわけで、まあ無効時に落ちても問題はないのですが、
なんか気持ち悪いです。

原因わかりますでしょうか?

46 : >>45
今パッと見た感じでは、class B25Decoderの*_bcasがNULLで初期化されてないからかなと思います
B25_DECODEが有効でないとinit()が呼ばれる事は無いので、デストラクタから呼ばれるrelease()で
未初期化アドレスにアクセスしそうです
対策としては、コンストラクタに
---
_bcas = NULL;
---
とでも追加すれば良いんじゃないでしょうか
#試さずに言っていますがヽ(;´ー`)ノ

47 : >>46
治りました!
ありがとうございます

48 : >>46
パッチの作者です。
ありがとうございます。

49 : BonDriverProxyExですが、タスクトレイに入るバージョンを作ってほしいです。
右クリックで終了できるだけでいいんですが・・・

50 : パッチの不具合修正しました。

http://pastebin.com/bt0nbXxZ

51 : >>49
確かに、終了とiniの再読み込みくらいできるようになると便利ですよね。
あと、サービスに登録できるとさらに。

52 : >>50
B25_DECODE=0
B25_DECODE=1
どっちにしてもB25デコードされてしまうようになってしまいました

53 : >>49
終了させる必要なんかある?

54 : >52
失礼しました。うっかりです。
B25 patch
http://pastebin.com/DzXHaxu0

55 : ビルドしてはみたものの、優先順序だか排他処理だかのini書式わかんね

56 : 以前からUIが欲しいと言う声がちょくちょくあがるので、テキトーですがつくってみました
https://drive.google.com/folderview?id=0B-b35lIwjw6ybzV5QU9DWkJLUWc
#機能部分は何も変わってないです

>>55
bdp/bdpexの話なら、どの辺がわからないでしょうか?
普通に使うだけなら、基本的にはサンプルの設定ほぼそのままで大丈夫じゃないかな、と
考えているのですが…

57 : >>56
ごちそうさまです!

58 : UIいらないなー
タスクトレイアイコン非表示にできませんかね

59 : ああ言えばこう言う

60 : RecTaskみたいに別にしてはどうだろうか

61 : タスクトレイにアイコンがあって困ることなんてあるのかい?
EDCBとかNicoJcatchとか他のアプリが全部タスクトレイアイコンなんで、
統一がとれて大歓迎なんだけど。起動してることもわかるし。

62 : サービス登録しなくてすむようになったし、GUIついたのとてもありがたい

63 : >>62
スタートアップ登録じゃログオンしないと起動しないのでサービス登録は必要。

# NSSMでサービス化して使っているけど、この状態だとトレイアイコン出てこない。
(デスクトップとの対話をサービスに許可しても同じ)

64 : ini書き換えるのと起動/強制再起動させる別アプリでよかったのかも
常時起動前提だとなるべくバグやリークの要因になりそうな物は
極力無い方が良いって意見もわかるし

65 : >>56
使いやすいです!

ini設定の再読み込みと、情報画面の非表示をウインドウのバツボタンから出来るようにしていただけるとなおうれしいです。

66 : BonDriverProxyってwinで使う場合、iniファイルSJISじゃないとダメ?あと、XPじゃ使えない?ntopがないって出る

67 : いけてるアイコンを考えてやれ

68 : ExだけでなくBonDriverProxyの方にもサービス登録機能お願いします

69 : BonDriverProxyExサービス版、早速導入しました。
これでNSSMいらずだ。ありがたい

70 : わお、サービス化対応してくれたのね
ありがとう

71 : 設定していて気になったのですが、BonDriver_Splitter.iniの読み込むBonDriverのパス指定で
00=..\BonDriver_xxxx\BonDriver_xxxx.dll
01=.\BonDriver_xxxx\BonDriver_xxxx.dll
のように相対パス指定として=.(ドット)から始めると、実際には指定したBonDriverが読み込めないのかTVTestのチャンネル選局がエラーになるみたいです
BonDriver.dll自体は、GitHubのソースコードをVS2013でx64ビルドしたものです

72 : >>71
あ、それ上で質問したのと多分一緒で、カレントディレクトリはBonDriverのとこじゃなくてTVTestのとこだからじゃないかな。

73 : そのままビルドしてSCコマンド使って登録してもサービスの起動に失敗してしまう
何かしないとダメなの?

74 : >>71
俺は問題ない
Sample.iniからだけど
00=【PT-T;】BonDriver_PT3-T0.dll;BonDriver_PT3-T1.dll
【】で囲った部分が抜けてるからじゃね

75 : ごめん
BonDriver_Splitterの話だったか

76 : SplitterでMX2は見れないの?

77 : サービス版はプルリク送ってくれた方がいて、当方はそれを若干手直ししただけですのでヽ(;´ー`)ノ

>>58
一応、ソースのヘッダにある、#define HAVE_UIをコメントアウトしてビルドすると以前と同じになります
また、後出しですがサービス版はUI無し版だけになってます…

>>65
>>68
それぞれやっときました

>>66
気付かずにXPには無いAPIを使うようにしてしまってました(;´Д`)
なので、32bit版はそのAPIを使わないようにしてみました
64bitのXPなんだよと言う場合はソースのこの辺り↓
https://github.com/u-n-k-n-o-w-n/BonDriverProxy/blob/212e161008cd631f9f678aa5eb3d7950ab015428/BonDriverProxy/BonDriverProxy.cpp#L1287-L1304
をinet_ntop()使わない方だけ残してご自分でビルドお願いします(;´Д`)

BonDriverProxyのiniの文字コードは特にShift_JISである必要はありませんが、UTF-8のBOMありでは
>>33みたいな罠があるのでご注意ください…

78 : >>72
アドバイス通りexeのところから相対パスしたらチャンネル選局エラーになった後、BonDriver_Splitter.dllのあるところから相対パス指定したら無事再生出来たので、他の部分の記述ミスのようでした。
お騒がせしました。

79 : >>71
レス書いてる内に解決してましたかヽ(;´ー`)ノ
今のバージョンでは>>72さんの件に対応(相対パスの基準をexeではなくBonDriver_Splitterに)してるので、
それが逆に仇となってしまったようですね
あと、PT1/2なら>>12みたいな話もあるので、もしまだならドライバ類を最新にしておくと良いかと思います
また、BonDriver_PTを使ってるなら、別件でptTimerスレに書いたのですが、
http://peace.2ch.net/test/read.cgi/avi/1413760076/907-908n
みたいな感じにPTCtrl.exeを変更すると保険になると思います

>>73
サービス用のslnファイルをコミットし忘れてて、さっき追加しました(;´Д`)
Release_SVCでビルドして、コマンドプロンプトから
---
> BonDriverProxy.exe a
---
で使い方が出るのでご確認ください

>>76
BonDriver_Splitterが正しく設定されてるのが前提として、TVTest等のアプリで正しいサービスを
選択していれば大丈夫かと思います
>>30が参考になるかもしれません

80 : 修正ありがとう

81 : サービス版いいね
ありがとう

82 : サービス登録するときは管理者コマンドプロンプトからですね

83 : >>79
レスありがとうございます
BonDriver_splitter.dllでスキャンしてもMX1とMX2の2個しかch2に記載されないので無効にするものがありません
根本的にわかってないのかも
;#SPACE(0,UHF)
TOKYO MX1,0,7,9,1,23608,32391,32391,1
TOKYO MX2,0,7,9,1,23609,32391,32391,1

どなたかUSESERVICEID=1でMX2見れてる方いらっしゃいますか?
いらっしゃれば心強いです。もう一度自分で設定頑張ってみます

84 : >>82
おお、そうでした
サービスをインストールする権限が必要ですね

>>83
MX1が見られるのなら、恐らく設定の問題ではないかと思います
BonDriver_Splitterのiniの、MX2の行が間違っていないでしょうか?
ちなみにUSESERVICEID=1のサンプル設定をそのまま使った場合、最終的にTVTestのch2ファイルのMXの部分は
---
TOKYO MX1,2,7,8,1,23608,32391,32391,1
TOKYO MX2,2,7,8,1,23609,32391,32391,0
TOKYO MX1,2,8,9,1,23608,32391,32391,0
TOKYO MX2,2,8,9,1,23609,32391,32391,1
---
のような感じになります
>>83さんは地デジをSPACE00に持ってきてますので、上記の「チューニング空間」は2ではなく0になるでしょうね

85 : >>84
なるほど、そういうふうになるのですね
KTV-FSUSB2を使っているので下2行がでてこないのは各種ドライバのせいかもしれません
ゆっくり試してみます。ご面倒をおかけしました

86 : >>85
対象のBonDriverをTVTestで直に読み込んで、チャンネルスキャンした時に出来るch2ファイルのMXの行を確認すれば、
後は>>41の内容で設定出来るのではないでしょうか

また、BonDriverによっては、読めるデータがTSとして同期されていないかもしれないので、
とりあえずTSSYNCを1にしてみるのも良いかもしれません
#他のチャンネルがみられているのなら関係ない可能性の方が高いですが…

87 : 落ち着きましたら例のパッチオナシャース
手動で書き換えてみたけどビルド失敗してしまう

88 : 例のってB25?
追加の依存ファイルにwinscard.libは追加した?

89 : >>86
おぉっ!TSSYNC=1で今まで現れなかったチャンネルがひょっこり検出されました!
すごいぃぃ、MXが劇的に軽くなったー!うぉぉぉぉ!感謝感激!
解決までおつきあいくださり本当にありがとうございました

90 : >>89
おお、TS同期の問題でしたか
同期してないTSを出力するBonDriverもやっぱりあるんですね
あるかもしれないなと思って追加しておいた機能でしたが、実際に役に立つ時が来るとは…
ReadMe読む限り、本当の意味でのいわゆるTS抜きをやってるBonDriverっぽいのでその辺の関係でしょうか
なんにしても、解決してよかったです

91 : b25パッチ自分の環境は通常版には問題なくビルド通る
けどサービス版は7 件の未解決の外部参照ってでて通らない

92 : winscard.libを追加し忘れてるだけじゃないの?
すべての構成 すべてのプラットフォームを選んでやれば
いっぺんに追加できると思うが。

93 : winscard.lib追加でビルド通りました
けどサービス開始できないorz
もうおとなしくしておきます

94 : なんとかビルド出来ました
お騒がせしました

95 : diffうp!

96 : http://pastebin.com/CXgb5f8d

97 : >>96
これ不味いんじゃないの? 勘違いだったらごめんね

98 : >>96
bcas_cryptとdecode_ecmがmarumoさんのlibarib25に無いけどどこから持ってきたのでしょうか?

99 : 最近EDCB tkntrec版とproxy,proxyEXを最新版に更新したらプレミアム用のbondriver使用時に
EDCBからのproxyがアクセス出来なかったってエラー吐くようになった
proxyEX再起動で治ったけどいつ落ちて録画できなくなるかわからんし
上の状態でもtvtestからのproxy使用では普通に見れる
とりあえずproxyのタイムアウトを10にしといてどうなるか様子見するけど
アクセス出来ないで居座るぐらいならrestart on crash使うのでその時点でproxyからexを落とすようになオプションが欲しい

100 : 無印proxy1.1.4.9をsplitter経由で長らく使ってきて、1.1.5.4にして2回応答無し(タスクトレイは動作)になったかな
今は1.1.5.2で様子見中

Splitter経由だとMX2がEDCBで録画できなかったけどEDCBソースをちょっといじったら大丈夫になった
Proxy&Splitter最高です。作者様に感謝

101 : おお、なんだろう…
再現条件等がわかればいいのですが(;´Д`)
とりあえずちょっと時間がある時に見直してみます

サーバを殺すコマンド追加は出来なくもないですが、その手の用途ならサービス化してしまって、
PsToolsのPsService(https://technet.microsoft.com/ja-jp/sysinternals/bb897542)辺りで
restartかけるのが良いかもしれませんね

102 : あ、このスレの内容にはあんまり関係ありませんが、さっきgoogleドライブにptTimer最新版(0.6.3.2)用の
ちょっとしたツールを置いたので、ptTimerユーザの方は良かったらどうぞ

103 : >>102
ありがとうございます

104 : どなたか地デジのQPSKシンボルレートがわかる方いますか?

105 : >>104
当方無線は全くの素人ですが、その辺りの情報はARIB STD-B31とTR-B14に載ってる感じでした
当方の理解では、QPSKはワンセグにしか使われてないみたいですね

106 : BonDriver_Splitterはもう
配布していないの?

107 : BonDriverProxy_current(********).zipの中に入ってるよ

108 : >>107
ありがとう。

109 : >>96
幾つかエラーになるけどいいのかな?

110 : 誰かPT2のSDKバグを社長に報告して

111 : 前スレのこの件?
http://peace.2ch.net/test/read.cgi/avi/1366339738/566
数レス後でメール投げていいかって聞いてた人いたけど、どうなったんだろね。
遠慮しなくても、>>110が投げてくれたらいいんじゃなかろうかと思いつつ、
自分で検証してないものを報告するのもどうかと思ったから他人任せにしてたけど、
結局誰も投げてない/投げないなら検証してから投げてみるかな。
ご丁寧に検証用コードまで上げてくれてるproxyの作者さんには頭上がらないですね。

112 : >>111
元で改善したほうがすっきりするよね。
原因がわかっていて下で対応するのは気持ち悪い。

113 : 同じ現象を確認できたので、メール投げておきました。

114 : >>113
ありがとう

115 : Windowsに刺したPX-S3U2をBondriver_Proxy経由でubuntuで使うことは可能でしょうか?
とりあえず試してみましたが CreateBonDriver error: pIBon[(nil)] pIBon2[(nil)] というエラーが表示されてしまいました。
Windowsの方でBondriverProxyが正常に動作していることは確認しました。

116 : >>115
試してないけど出来るはずだけど。
strace -o output.log -s 1024 sample -b ./BonDriver_Proxy.so -s 0 -c 63 -t 30 -o test.ts
とかやってみてoutput.logを最後の方から眺めていけば何かエラーが出てるはず。
自分が良くやったのは、設定ファイルを「BonDriver_Proxy.conf」から
「BonDriver_Proxy.so.conf」(.confではくて.so.conf)に変更するのを
忘れること。これだと以下のエラーが出てるはず。
open("./BonDriver_Proxy.so.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
後は設定ファイルの中身が正しいかどうかとか。

117 : >>116 ありがとうございます。試してみましたが設定ファイルは存在していました。
設定ファイルの中身ですがBonDriver_Proxy.confについては ADDRESS,PORT,BONDRIVERだけ変更すればよいと思うのですが、
BonDriver_LinuxPT.confのほうは編集する必要ありますか?

118 : とりあえず>>99以後3回ほど現象が再現
イベントビューアーには異常なし
3回のうちtvtestからもアクセス出来ずタスクマネージャーからも終了出来ないのが1回
restart on crashがハングアップを検出して再起動するもEDCBからはチューナーオープン出来ないのが1回
(tvtestからはアクセス可能、BonDriverProxyExを手動で終了、再起動した場合はEDCBからも使えるようになった)

どなたかBonDriverProxyEx 1.1.5.3のソースアップして貰えませんか?
消してしまったので手元に残ってないんです
とりあえずこのエラーが出るようになる前に1.1.5.3を暫く使ってたので戻して様子見しようかと

119 : >>118
https://github.com/u-n-k-n-o-w-n/BonDriverProxyEx/tree/7bcba06c6743eab9a51c3769c10b1c6ad787cf2b

120 : >>117
BonDriver_LinuxPT.confはubuntu側にチューナが刺さっている場合に使う物なので、
ubuntu側をクライアントとして、win側のチューナを使う場合にはさわる必要はないです

>>118
検証ありがとうございます
1.1.5.3から現バージョンまでの変化で怪しい部分と言えばダントツでUI追加ですね…
現バージョンのソースで
https://github.com/u-n-k-n-o-w-n/BonDriverProxyEx/blob/ed6466445e8be15af03dd0c6d853be8994da426c/BonDriverProxyEx/BonDriverProxyEx.h#L13
の行をコメントアウトか削除すれば、1.1.5.3とほぼ同じになるはずなので、
もし1.1.5.3に戻して問題が起きなくなったなら、余裕があればこちらも試してみて下さい(;´Д`)
#なおサービスバージョンの場合は必然的にそうなりますので、サービスバージョンでも問題が起きる場合は
#UI関係ではない可能性が高いと言う事になります…

121 : >>120 ありがとうございます。
調べたところ↓の !pProxy->SelectBonDriver() でエラーが起こっているようなのですが何が原因なんでしょうか?
https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux/blob/master/BonDriver_Proxy.cpp#L1006

122 : >>121
そこでコケると言うのは、サーバ側に、使用したいBonDriverはこれだとリクエストしたけど、サーバ側から
エラーが返ってきたと言う事ですね

エラーになる原因はいくつか考えられますが、confに設定しているBONDRIVERの値が、win側で読み込ませたい
BonDriverのパス指定として間違っているとか、win側で読み込ませたいBonDriverが何らかの理由で読み込めなかった
(例えば、x64版のサーバを動かしていて、x86のBonDriverを読み込もうとした等)辺りが可能性高いのでは
ないでしょうか

123 : >>122 クライアント側confのBONDRIVERを、サーバ側にある(Windows用)ドライバのパスにしたら接続することができました。ありがとうございます!
勘違いしてLinuxのBonDriver_LinuxPT.soのパスを書いてました。。

124 : >>123
おお、よかったです
確かにlinux側で動くプログラムのconfにwin用dllのファイル名書くとか、その逆でwin側のiniに
linux用共有オブジェクトのファイル名書くとか、あまり無い状況ではありますしねヽ(;´ー`)ノ

125 : >>123,124
そういえばWindowsをサーバーにしてLinuxからアクセスしたことなかったなと
思ったのでテストして文章書いている間に解決してたのだけど...。せっかく
書いたしこんな感じでいけましたよということで。

サーバー : Windows7、PX-W3U3、BonDriverProxy
クライアント: Ubuntu、BonDriverProxy_Linuxのsample、BonDriver_Proxy.so

○Windowsでのサーバー側手順
・C:\Users\XXXXXX\Documents\Software\BonDriverProxy に以下を配置。
BonDriverProxy.iniはSample.iniをコピーしたもの。

BonDriverProxy.exe
BonDriverProxy.ini

・BonDriverProxy.ini はADDRESSをサーバーの実際のアドレスに直す。
[OPTION]
ADDRESS=192.168.2.8

・BonDriver_PX_W3U3_T.dllはTVTestのディレクトリにあるものを使う。
C:\Users\XXXXXX\Documents\Software\TVTest\BonDriver_PX_W3U3_T.dll

126 : ○Ubuntuでのクライアント側手順
・BonDriver_Proxy.conf を BonDriver_Proxy.so.conf として
BonDriver_Proxy.so と同じディレクトリにコピー。
・BonDriver_Proxy.so.conf の以下を修正。ADDRESSはWindowsサーバーのアドレス。
BONDRIVERはWindows側のBonDriver_PX_W3U3_T.dllがBonDriverProxy.exeと
違うディレクトリにあるのでフルパスで指定した。

ADDRESS=192.168.2.8
BONDRIVER=C:\Users\XXXXXX\Documents\Software\TVTest\BonDriver_PX_W3U3_T.dll

・sampleを実行
sample -b ./BonDriver_Proxy.so -s 0 -c 13 -t 30 -o test.ts

127 : そこ、自分もハマった。
無理なのかとおもって結局BonDriverExの方を使った

128 : VisualStudioExpressからパッチファイルの作成方法教えてください。

129 : WinMergeやdiff.exeなら聞いたことあるけど
Visual Studioでパッチ作成できるなんて初めて聞いた

130 : 開発環境なんだから作ろうと思えば作れる

131 : WindowsにBondriverProxyのサーバーを立てて、LinuxでrecbondとBondriver_Proxyを使って録画しようとしています。
recbondでBSのチャンネルを指定する方法がよくわからず録画できないのですが、どのように指定すればよいのでしょうか?
地デジの方はBonDriverチャンネル指定で正常に動作しました。

132 : >>131
sampleなら
地デジ=sample -b ./BonDriver_Proxy_T.so -s 0 -c 0 -o t0.ts -t 30
BS =sample -b ./BonDriver_Proxy_S.so -s 0 -c 0 -o s0.ts -t 30

recbondは使ってないのだけど同じじゃないかな?
地デジ=recbond --driver ./BonDriver_Proxy_T.so B0 30 t0.ts
BS =recbond --driver ./BonDriver_Proxy_S.so B0 30 s0.ts

当たり前だけど、BonDriver_Proxy_S.so.confのBONDRIVERはWindowsの
BS用のBonDriverを指定するってこと。

まあ、同じ機種を持っている奇特な人がテストしてくれるかもしれない
からWindowsのチューナーの機種名とかBonDriverのファイル名とかも
書いた方が良いのではないかな。

133 : >>131
今ちょっと手元に環境が無くて試せないのですが、ドキュメントからもソース眺めた感じからも、
B0みたいに指定すれば対象BonDriverのSetChannel()に直接指定した数値を渡すようになっているように見えるので、
このBonDriverチャンネル指定を使う場合は地デジもそれ以外も同じではないでしょうか?
https://github.com/dogeel/recbond/blob/e6fe8e3c68c8ec5994faf267d64b7fe528e004bf/recpt1core.c#L46
#のnodeは(int)dwBonChannelでしょうね

linux版の方で作者さんに直接聞く方が確実かもしれませんがヽ(;´ー`)ノ

134 : ありゃ、カブッてしまいましたヽ(;´ー`)ノ
でも同意見なのでやはりそれであってそうですね

135 : >>132,133 どうもありがとうございます。
過去ログをよく読んだらBonDriver用のiniファイルをドライバがあるフォルダに置いてなかったの原因でした。。。
iniファイルをおいたら地デジと同じようにBonDriverチャンネル指定で録画することができました!

136 : GitHubの現行BonDriver_Splitterにはデータ放送を削除する機能は無いですか?
>>11の話では旧版では削っていたようなので、現行でも削れると嬉しいのですが

137 : >>136
無条件削除しているままでしたが、わかりにくいので明示的に指定された場合のみ削除するようにしました
iniのDELオプションにTYPEDを指定すると削除されるようになります
#なお、書くの忘れていましたが、MODPMT,TSSYNC,DELの各オプションは1チャンネル1サービスモードが有効な場合にのみ機能します

今までのバージョンを使用していた方で、今まで通り削除して欲しいと言う方は申し訳ありませんがiniに追記お願いします

あと、スレッドハンドルの閉じ忘れに気付いて修正しているので、変更内容的にはバージョン上げなくても良いかなと
思った方も更新する事をおすすめします…

138 : >>137
更新お疲れ様です
EPG情報を取得する場合、データ放送に加えてどこまで削れるのかわからずやっとCDTを削ってみたビクビク人生
Proxy&Splitterで毎日使わせてもらっています。ありがとうございます

139 : Windowsタブレット(Atom Z3740)でのTvTest視聴(wifi,Splitter経由)のCPU負荷軽減のためにBonDriverProxyEx.exeのB25デスクランブル改造してみたけど、
クライアント側の負荷はほとんど変わらないようだ

Splitterでのネットワーク負荷の低減のほうがはるかに大きいね、DELオプションでの差はもっと検証したい

140 : >>137
更新乙です

"DEL=TYPED"を指定しても、TVTestの「ストリームの情報」にはデータ1~nがズラッと並んでいるのですが、並んでいても正常にデータ放送PIDが削除されてると判断して良いのでしょうか?
(しばらく放置しても局ロゴを取得できてないので、正常に削れてるぽい?)
BonDriver_Splitter.dllはVS2013Update4でx64ビルドしたものです

141 : >>140
はい、実際のデータは削除されています
例えば、その状態でTVTestから「データ放送を保存する」のチェックを入れて録画して、その録画ファイルを
tsselect(https://www.marumo.ne.jp/junk/tsselect.lzh)にかけてみると確認できると思います

TVTestの「ストリームの情報」ではPMTに書かれている情報を表示しており、BonDriver_SplitterはPMTの編集は
行わないのでそうなっています
MPEG-2 TSの仕様上はそうなっていても問題無かったと思うので…

ついでにもうちょっと細かく制御できるようにしてみました

142 : ちなみに消せるようにしてるものの内サイズが大きいのはTYPEDとEITで、有料放送の場合はEMMも結構大きいですね
#EPG使うならEIT全部は消せませんが
それ以外は全体的なサイズからみたらほとんど誤差みたいなもんかなと思いますよ

143 : サイズが大きいのはTYPEDとEITとメモメモ
EPG取得のときだけEITを取得するiniに入れ替えればいいね
これで更に軽くなるっす。感謝

144 : PTのSDKの件、社長さんにメール投げて反応ありました?
どうなったんだろう?

145 : BonDriver_PT-ST(人柱版3) up0305
をビルドしようと思っているのですが、BonDriver_PT.dllが出来るだけで、
BonDriver_PT-S.dll
BonDriver_PT-Tdll
が出来ません。
どうすれば出来るようになるんですか?

146 : >>145
スレチ

http://peace.2ch.net/test/read.cgi/avi/1415118405/103-106

147 : >>146
すみません

148 : >>146
それはPT3の場合で、BonDriver_PT-ST(人柱版3) up0305 には該当箇所がありませんでした・・・

149 : >>148
オリジナルのままなら、BonTuner.cppに
#define _ISDB_T
の行はあるはずなので、もしかしてちょっと前に当方がEDCBスレに貼ったパッチを当ててのビルドの話でしょうか
もしそうなら、できたバイナリをコピーしてBonDriver_PT-S.dllやBonDriver_PT-Sx.dllと言う名前にすればS用、
BonDriver_PT-T.dllやBonDriver_PT-Tx.dllと言う名前にすればT用として動くようになってます

150 : >>149
そういうことでしたか。
ありがとうございました。
スレチすみませんでした。

151 : >>149
せっかく投下してくれたパッチなのに情報が散々していてしまって勿体無い。
このままじゃパッチも情報も埋もれちゃうね・・・

152 : >>144
残念ながら、現在のところ反応はないですね。
どうしたもんでしょうね。

153 : >>152
そうですか・・・
瓦ドラにSleep入れて対処します。
かすかな期待を持って待ってみます。

154 : すいません、>>4にある、BonDriver_RDCT をDLしたいんですが
パスがわかんないです…
せめてヒントの一つでも教えていただけないでしょうか?

155 : >>154
ここは何板だよ

156 : >>155
検索しまくって、自己解決したっす
ありがと

157 : >>156
よかったね

158 : ノートンときたら><;

159 : BonDriverProxy_Splitterで削れば今どきの格安Winタブでもスペック大丈夫?

160 : Splitterってどうやって使うのかよくわからん
bondriverproxyExと組み合わせて使えたりしないの?
誰か優しく教えてください

161 : >>159
VirtualPTで申し訳ないけど、不要なサービスが一通り削れた状態でYogaTab2-8とかVivo tabで普通に視聴出来てる。
(テレビとか見る目的なら、自立するし音良いしバッテリーの保ちもいいし、Yoga tabなかなかおぬぬめ。)

AP選ぶ時は古い11n対応製品だと少し速度足りないかも。買い換えるなら5GHz対応品がお勧め。
タブレット選ぶ時は無線感度の評判とか気をつけた方が良いかも。同じく5GHz対応品がお勧め。

162 : Splitter最高!とても助かってます。Proxy共々最新版でド安定。作者さんに感謝感謝

163 : KTV-FSUSBでBonDriver_Proxy&Splitter(TSSYNC=1,TSSYNC=1,DEL=TYPED)の組み合わせで有り難く使わせてもらっています
TVTest0.9でMX1とMX2を頻繁にチャンネル切り替えしていると希に映像が止まりってしまいます(dBやMbpsは正常に動いている)
切り替え50〜100回に1回程度のことなので気にするなと言われればそれまでなのですが、EDCBでもMX1の録画で極希に0byteファイル(エラー無し)が出来てしまうので困っています(EDCBに関しては別の原因かもしれませんが)
Proxy単体ではもたつくことはありますがチャンネル切り替えに失敗することはないようです
うちだけのおま環現象なのでしょうか?

164 : すいません、その後、画面が止まった状態で録画ボタンを押してみたところきちんと録画されてました
どうやら自分でビルド&改造したTVtestやEDCB周辺の問題みたいです
Splitterの不具合ではありませんでした。本当に申し訳ございませんでした

165 : BonDriverProxyのCAS処理の有無をBonDriver毎に設定できるようになるといいな。
ついでにプレミアムも観たいのでデコーダーを選べるようになるといいな。

166 : >>165
何の意味があるんだか

167 : >>166
素人にはわからないんだろうな

168 : >>167
ぷっ

169 : 俺プロだけど分からないわー

170 : お前じゃ分からないか、この領域(レベル)の話は

171 : 自称プロは実在をしらないんじゃないか?
素人の俺でもわかるのにww

172 : 寄付で30万円ぐらいしか稼いだことないなんちゃってプロな俺は分からないなぁ

173 : BonDriver_Splitterいいですね1日遊んだんですけど単体は問題なしなんですが
BonDriverProxyとの連携が全然うまくいきません
そのままSoritterをProxyのiniでラッピングしてもダメなのかな
iBondriver()がNULLで返されましたとTVTESTで返してお手上げです。
実験でSpritterをSpinelに飲ませてみたのですが色々書き換えて
認識は問題なしTVTESTでもエラーでずだけど
チャンネルスキャンが灰色で選べないで手詰まりに
BonDriver_PT-S.ChSet.txtを書き換えてなんとかなるレベルなんだろうかこれは
もう1つのProxyのほうはなんでエラーでてるのかさっぱりなのでソース読んで
エラーを自分で振ってチェックしてみるか。

174 : マザーをまな板って言う香具師
ソフト関連やハードを遊ぶって言う香具師
sourceをソースって言う香具師

これらは全員キモオタの中二病だと本気で認識してる

175 : なんの改変ネタだよ

176 : 香具師つかう人なつかしいな・・脳が10年前でストップしてる

177 : 香具師とはまた懐かしい響き

178 : 結局香具師の本来の意味って調べたことなかったな

179 : Bondriver_Splitterって鯖じゃなくて自機のローカルのBondriverを1チャンネル1サービスに分割することって出来る?
と思って試してみたらtvtestの視聴は正常に出来るんだけど、
ソース: Application Error
イベント ID: 1000
障害が発生しているモジュール名: msvidctl.dll_unloaded
とイベントログに必ず記録されるんだけど
あとtvtest.iniに最後に見たチャンネルなどの設定が正常に記録されなくなる

180 : DirectShow関係のライブラリみたいだけど、デコーダとかレンダラとか切り替えてみたら。
bonDriver関係ないと思う

181 : >>173
ありがちなポイントとしては、
・BonDriver_Splitterから読み込む対象のBonDriverがみえているか?
・アプリやそれぞれのdllについて、x64/x86の違いは問題無いか?
辺りでしょうか…
前者はBonDriver_Splitterを使うマシンでDebugView等でモニタしながら動かすとエラーが起きてるかどうかわかります
後者は個々のバイナリがどっちなのかを確実に確認するしかないですね
Dependency Walkerやdumpbinを使えば簡単ですが、対象バイナリをバイナリエディタで開き、ファイル先頭から
"50 45 00 00"(PEヘッダシグネチャ)を検索して、その直後の2バイトが"4C 01"ならx86、"64 86"ならx64、
と言う確認方法でもまず大丈夫かと思います

182 : >>179
基本的には対象BonDriverから読み出したTSストリームを設定に従って分割してるだけなので、そう言う使い方も一応可能です
が、TVTestの場合は同じ事が自前で出来るので、それにあんまり意味は無さそうかなと思っていましたが…

文脈的に、Application ErrorのEventID:1000はやはりTVTestが出してると言う事でしょうか?
だとするとちょっと良くわからないのですが、もしそうでは無く、例えばBDPLのおまけのsampleをwinに移植したもの
とかだとすると、sample側でCOMの初期化を行うようにしておかないと、BDA系のBonDriverをBonDriver_Splitter経由で
読み込んだ場合にその手のエラーが発生するかもしれません

183 : >>173
あ、こっちのほうは土曜一日かけていろいろ調べて、Spritter&Proxy混合で
ばっちり動いています。お気遣いありがとうございます。
Proxyのini設定ファイルに記載するBONファイル長の問題だったようです。
TとSを4つづつフォルダと記載なので軽くオーバーしていたようです。
1つのフォルダにまとめて簡潔に記載することにより動作しました。
軽くて快適です。

184 : 前のレス >>173じゃなかった >>181の方ね
でもやっぱりT、Sそれぞれに登録したデバイス指定と
チャンネルロックは個別ふりが欲しくなってきました。

185 : >>182
障害が発生しているアプリケーション名: TVTest.exe、バージョン: 0.9.0.0、タイム スタンプ: 0x55da7838
障害が発生しているモジュール名: msvidctl.dll_unloaded、バージョン: 6.5.10240.16384、タイム スタンプ: 0x559f3b17
例外コード: 0xc0000005
障害オフセット: 0x000bbc5b
障害が発生しているプロセス ID: 0x4bc
障害が発生しているアプリケーションの開始時刻: 0x01d0de363f799932
障害が発生しているアプリケーション パス: C:\DTV\TVTest\TVTest.exe
障害が発生しているモジュール パス: msvidctl.dll

こういう感じです
PX-BCUDなので配布ドライバに難があるのかも?あるいは、こちらで何らかの設定を間違えてるとか。

186 : 終了中にクラッシュしてる?

187 : >>184
> でもやっぱりT、Sそれぞれに登録したデバイス指定と
> チャンネルロックは個別ふりが欲しくなってきました。

具体的にどのような動作なのか教えてもらえれば時間がある時に検討してみます
#チャンネルロック周りは現仕様との互換性が鬼門になりそうなので、
#聞くだけ聞いて無理でしたとなるかもしれませんがヽ(;´ー`)ノ

188 : >>185
やはり以前BDP本体でも対応したCOM周りの問題に似てますね
TVTestはちゃんとCOM初期化行ってるのですが…と思いましたが、よく考えるとSetChannel()で読み込んでるBonDriverの切り替えが
発生する場合に、それが内部で勝手にCOM初期化/終了処理を行うあんまり行儀のよくないBonDriverだった場合、地雷踏む可能性が
あるかもしれません
#そしてPX-BCUD用のBonDriverは、上記行儀のよくないBonDriverに該当します(;´Д`)

これはどう対応するべきか…
OpenTuner()/CloseTuner()とSetChannel()を別スレッドから行っていると言うTVTestの仕様にも関係してくるので、
汚い対応にならざるを得ないかも(;´Д`)

もしビルド環境があるなら暫定的に、
https://github.com/u-n-k-n-o-w-n/BonDriverProxy/blob/1ade5f878fec228364d13130c5a9b4dead4b653a/BonDriver_Splitter/BonDriver_Splitter.cpp#L554-L555
の2行の間に、
---
::CoInitialize(NULL);
---
を追加してからビルドして、状況が変わるか試してみてもらえないでしょうか?

189 : あるいは、使用しているBonDriverがこれ↓なら、
http://www1.axfc.net/uploader/so/2503551
BonDriver_BSCS.dllに以下のバイナリパッチを当てて試してみるとか…
#ウチには動作環境が無いので動作テストはできていませんが(;´Д`)
---
000007BB: 6A -> 8B
000007BC: 02 -> F1
000007BD: 6A -> EB
000007BE: 00 -> 08
00000902: FF -> EB
00000903: 15 -> 04
00000904: 88 -> 90
00000905: 91 -> 90
00000906: 01 -> 90
00000907: 10 -> 90
---
OpenTuner()/CloseTuner()で勝手にCOMの初期化/終了処理を行わせないようにしたつもりで、
個人的にはこちらの方が好みですヽ(;´ー`)ノ

190 : BonDriverProxyExをちょっと試してみました。

CHANNEL_LOCKの動作が曖昧で怖い気がする。
というか、LOCKというより同じ優先度って感じなのでしょうか。

Spinelだと排他コントロールでアクセスすると、
後でアクセスしてきたクライアントはいかなる権限でもチャンネル変更ができなかったけど
(というより排他コントロールを求める追加アクセスはキャンセルされる)

BonDriverProxyExの場合
CHANNEL_LOCK=1ですべてのチューナにアクセス中でも、
後で来たCHANNEL_LOCK=1のクライアントが自由にチャンネルを変更できてしまう。

実用上の問題はないんだろうけど、ちょっと気持ち悪い。

191 : 0の時と同じ動作してるんだろう
確かに0同士の時はロック権限無いから後から来たのを優先させるのがいいけど
1の時はどっちがいいだろうかと思ったが
そもそもロック権限持ちが物理チューナー数を超える場合は録画ソフトが調定する事であって問題起きる環境を見直すべきじゃなかろうか?

192 : だいたい、その通りなんだけど
ini_info.txtには排他制御って書いてあるので、ちょっと違うんじゃないかと思ってね。
話しに挙げてみただけ。

193 : >>187
>#聞くだけ聞いて無理でしたとなるかもしれませんがヽ(;´ー`)ノ
いつもごくろうさまです。spritterの1サービス1chすごく便利です。
使用用途としてはTチューナを4つSチューナを4つ登録して
それぞれのTとSの最後のチューナのみ視聴として使いたいのです
で、このチューナのみchロックを外しておけばPCで視聴途中席を立った
最中は無線で飛ばしてタブレットなどでもそのまま見ることが出来、
1つのチューナ内で連動してチャンネルも自由に変えられます。
※実際spinelはその動作が可能です。
現状前3チューナをasc指定後ろ1チューナをdesc指定して使ってますが
ロックの問題とチューナの使用状況によりチューナが増えるのが難点で
これがデバイス1つ1つ指定できて排他ロックしてほしい理由です。

194 : BondriverspritterとBonProxyExを1週間使用してみたのですが
過去ログにもどなたかが書かれてましたがチャンネルを次々変えるような
動作(具体的にはTVROCKから1チューナを視聴で使い番組情報取得を実行)
を行うとProxyEXが落ちることがあります。
またこれが起こるとチューナーをつかんだままになることがあります
具体的にはPT2のSチューナが占有されたままで再起動するまで直りません
でした。Spinelとかだと占有されたデバイスを手動で切れるしSpinelを
終了すれば占有してるのも解除してくれてたので判りやすかったのですが

※ちなみに番組情報を連続して使用しなくてはいけなくなった理由は
SpritterでEITまで指定してたのに気づいた…そりゃ番組情報が空にorz

195 : >>190
あれ?ascとdescができた経緯と仕様説明で
登録BONDRIVERの指定は登録した先頭順か最後尾順しかできないはずだから
同一のチャンネルでないかぎり新しいドライバが開く仕様だと理解してたけど
違うの?

196 : >>195
チューナーがすべて埋まった場合は既存チューナが開くと思うのだけど
その場合ね。
ちょっと、もう一度いろいろ確認してみる。

197 : >>190-192
確かに排他制御と言うと意味的に違ってきますね
後でini_info.txtの記述を直しておきますヽ(;´ー`)ノ
一応、ReadMe.txtの方の記述(こちらはちゃんと優先度と書いてました)が正しいと言う事で…
https://github.com/u-n-k-n-o-w-n/BonDriverProxy/blob/1ade5f878fec228364d13130c5a9b4dead4b653a/ReadMe.txt#L54-L55

ここの挙動は一番最初にどうしようか迷ったんですが、>>191さんとほぼ同じ事考えた結果、
今の仕様になってます

198 : >>193-194
例えばSで言うと、4チューナの内1つは必ず視聴用に空けておきたい的な意味でしょうか?
その場合は録画ソフト側で、Sのチューナは3つと設定してしまえば、ロックされるのは最大で3チューナまでなので
1つは必ず空きますが、そう言う単純な話ではないと言う事ですよね…?
当方なにぶんハードコアな録画人ではないので、あんまり高度な使い方が想像できず…
これこれの状況ではこのように動いてほしい、みたいに教えてもらえると助かります(;´Д`)

落ちる件に関しては、TvRockはさわった事が無いのですが、実際にBonDriverを使ってるのはTVTestと言う事でしょうか?
形としては1つ目のTVTestで視聴しながら別のTVTestでチャンネルスキャン、みたいな状況と同じなのかなと思うのですが、
手元ではちょっと再現できていません…
使用ソフト類のバージョン等の環境と、あともし具体的な再現方法がわかれば教えてください

199 : >>188-189

レスありがとうございます。
まず>188のですが、ソースに追加はしたのですがこちらの環境を最近VS2015に切り替えてまして

3>BonDriver_Splitter.cpp(556): error C2105: '--' には左辺値が必要です。
3>BonDriver_Splitter.cpp(558): error C2059: 構文エラー: '}'

ビルドしようとすると上記のエラーが出てビルド失敗してしまいますw
これは別問題なので報告させて頂きます

>189の方ですが、バイナリを改変してPX-BCUDの実機でテストしてみましたがエラーは出なくなり
前回終了時のチャンネルもちゃんと次回起動時に反映されるようになりました。
お手数おかけしましたが、大変ありがとうございます。

なおお手数ついででさらに問題を増やして申し訳ないんですが、PX-W3U3を自機に繋いでSplitterで
運用しようとするとチャンネルスキャンで確実にTVTestが落ちますw
対象BonDriverでのチャンネル番号等はPXシリーズとPT2、3とは違うので全部書き換えてあるのですが、
そのへんは設定に問題ないとは思うのですが…。
おそらくまた配布Bon_driverに難があるのでしょうし、特に必要に迫られているわけではないですが、
再現性100%なのでご報告まで。

200 : ログの名前: Application
ソース: Application Error
日付: 2015/09/01 5:36:32
イベント ID: 1000
タスクのカテゴリ: (100)
レベル: エラー
キーワード: クラシック
ユーザー: N/A
コンピューター:
説明:
障害が発生しているアプリケーション名: TVTest.exe、バージョン: 0.9.0.0、タイム スタンプ: 0x55da7838
障害が発生しているモジュール名: BonDriver_PX_W3U3_S1.dll、バージョン: 0.0.0.0、タイム スタンプ: 0x4d8b6111
例外コード: 0xc0000005
障害オフセット: 0x00012c94
障害が発生しているプロセス ID: 0x2dc
障害が発生しているアプリケーションの開始時刻: 0x01d0e42c84a3f4ff
障害が発生しているアプリケーション パス: C:\DTV\TVTest\TVTest.exe
障害が発生しているモジュール パス: C:\DTV\TVTest\BonDriver_PX_W3U3_S1.dll


エラーログはこんな感じです。

201 : あと、PX-W3U3を繋いだ鯖に対して他のクライアントからBonProxyExへBpndriver_Splitterで繋ぐ分には
視聴にもチャンネルスキャンにも全く問題が無いです。自機でチャンネルスキャンのみTVtestごと落ちます。

202 : >>197
レスありがとうございます。
そこに書いてあったんですね、見逃してましたすみません・・・。

仕様なら仕方ないですね。
ありがとうございました。

203 : >>199
追伸、自己レスになりますが早朝なので寝ぼけてて---の部分も一緒にコピペしてビルドしてましたw
今削除して再ビルドしたら成功しました、お騒がせしました。

ビルドしたものをtvtestに読み込ませようとしましたが、読み込めないか見当たらないというようなエラーが出るので
検証できませんでした。何故かは分かりませんがいま時間が無いのでちょっと置かせてください

204 : >>198
返信ありがとうございます。
>例えばSで言うと、4チューナの内1つは必ず視聴用に空けておきたい的な意味でしょうか?
視聴用ですがネットワークで別端末で利用したいのでProxyの機能は必要なのです
前3つのチューナーは録画チューナーなのでProxyEXが前から選択しても問題ないのですが。
いっそProxyで最後のチューナーのみノンロックで登録しちゃえばいいじゃん
とも思えるのですがSpinelだと録画中なのもロックのまま確認などもできてたので
あったらいいなという感じです。

>実際にBonDriverを使ってるのはTVTestと言う事でしょうか?
そうです。TVTest起動後のプロセス見てるかぎりTvRockOnTVTestというプラグイン
内でDDEを使って番組情報を取得してるだけなので実際にドライバを占有している
のはTVTestになります。
>使用ソフト類のバージョン等の環境と、あともし具体的な再現方法がわかれば
Windows10 Pro 64bit TVRock ver0.9u2バグ修正パッチ適応版
TvRockOnTVTest (修正版8.1) ※BSCS最新TSID周波数のマッピングini適応済み
TVTest 0.723(x86) + BonDriver_Proxy.dll
TVRockにTチューナを4つSチューナを4つ登録し最終Sチューナで視聴中に
番組情報の全チャンネル取得(ただし仕様で10分ほどで切れるので何度か行う)
3時間ほどやってProxyEXが2回落ちたので再現率はほどほど。

205 : >>199-201,203
>>189の対応で直るのなら、やはり原因は>>188に書いたもののようですね
ひとまず問題無くなったようで良かったです
また、再現状況からみる限り、BonDriver_PX_W3U3の方もBonDriver_BSCSと同じ原因に見えます
BonDriver_PX_W3U3と言うと、これ↓だと思いますが、
http://www1.axfc.net/uploader/so/2503073
// BonDriver_PX_W3U3_S
---
0000FF0E: FF -> EB
0000FF0F: 15 -> 04
0000FF10: 84 -> 90
0000FF11: 71 -> 90
0000FF12: 01 -> 90
0000FF13: 10 -> 90
0001007F: 6A -> EB
00010080: 00 -> 06
---
// BonDriver_PX_W3U3_T
---
0000FE6E: FF -> EB
0000FE6F: 15 -> 04
0000FE70: 78 -> 90
0000FE71: 71 -> 90
0000FE72: 01 -> 90
0000FE73: 10 -> 90
0000FFDF: 6A -> EB
0000FFE0: 00 -> 06
---
>>189と同様の変更になると思うので、直るかもしれません
なお、もし無改造のBonDriver_BSCSが>>188の変更で使えるようになるなら、
BonDriver_PX_W3U3も無改造で大丈夫になるんじゃないかと思います

206 : >>204
> 視聴用ですがネットワークで別端末で利用したいのでProxyの機能は必要なのです

例えば、BDPEXへのBonDriver登録でSとして4個登録しておき、録画用Sチューナが3つで良いのならTvRockには
Sのチューナ数を3として設定しておけば、ロック権を持つクライアントは3つ以上発生しない筈なので、
残り1つのチューナは視聴用として常時使える状態になりますよね?そう言う話ではないのでしょうか?ヽ(;´ー`)ノ

> TVRockにTチューナを4つSチューナを4つ登録し最終Sチューナで視聴中に
> 番組情報の全チャンネル取得(ただし仕様で10分ほどで切れるので何度か行う)
> 3時間ほどやってProxyEXが2回落ちたので再現率はほどほど。

なるほど…
時間ができたらもうちょっと詳しく再現実験やってみます

207 : >>205
こちら対応の方ありがとうございます。
チャンネルスキャンの方ですが、W3U3のBon_driverのバイナリを修正したのですがTVtestが落ちる症状は変わらずでした…
こちらのチャンネル設定などに間違いが無いか後でもう一度iniファイルを調べ直してみます。
(BCUDの方はドライバ修正前でもチャンネルスキャンは無事完走していました)

>>188の方ですが、gitからダウンロードしたzipからソース無改造のビルドをしてBondriver_Splitter.dllを置き換えても
TVtestでは読み込めない、モジュールが見当たらないとエラーが出ます。
複数のPCで検証して同じ事になるので、VS2015でビルドしていること自体に何か問題があるのでは
と思うのですが…

以上、2点ともこちらの環境の問題である可能性があるのでまた後で調べてみます。

208 : >>206
>そう言う話ではないのでしょうか?ヽ(;´ー`)ノ
ちょっとだけ違います。
SとT混在して話するとややこしくなるのでTだけの話にして
視聴チューナをメインに考えれば後ろ1チューナだけロックなしで
登録すればそれで問題なし!出先からでもタブレット端末でも視聴可能です。

が、前チャネルがちゃんと録画開始してるか確認したいって話になると、
チューナ選択できるわけではないしできてもロックしてないと起動した時
チャンネル変わる危険性もあるしで確認できない。って話です

使い勝手の問題ですね。Spinelでは可能でVirtualPTでもチューナはVirtualPT
まかせなので無理な使い方です。

209 : それはtvrockにブラウザ経由でアクセスして確認することでしょ
なんで録画されてるかどうかをチューナー共有ソフトで確認するの?
そんな気になる程不安定なら環境を見直すべき

そんなにspinelと同じ使い方したいなら
チューナー1つずつグループ分けすればいいんじゃねえの
それやるとtvrockで運用する時の唯一の利点である同一チャンネルの連続した録画の切り替わりや同じ時間に同一トラポンのCSチャンネル複数同時録画等
tvrockからは複数チューナー使ってるように見えて実際は1チューナーしか使わないってのもなくなるけど

210 : >>209
不安定じゃないですよずっと少なくとも2年はSpinelで構築してたので

>そんなにspinelと同じ使い方したいなら
>チューナー1つずつグループ分けすればいいんじゃねえの
それは既にやってみました
00=PT-Ta;
01=PT-Tb;
01=PT-sc;
01=PT-Sd;
こういうことですよね?しかしこれは過去ログですでにSとTでまとめないと駄目だと
回答がでてる内容なので残念ながら使えないようです。

211 : 間違えたこうだった
00=PT-Ta;
01=PT-Tb;
02=PT-sc;
03=PT-Sd;

212 : 対応してほしい気持ちはわかるけど
あまりメンテナーを困らせちゃだめだよ

213 : >>207
ありゃ、ダメでしたか
となるとまた何か別の原因なのかもしれませんね(;´Д`)
なんだろう…

ビルドしたのが読み込めない件は、
・アプリとBonDriverのx86/x64のズレ
・MDでビルドしたけど実行環境には2015のランタイムが入っていない
辺りではないでしょうか?
当方の手元では、VS2015環境でビルドした物でも一応問題無く使えています
#もっとも、しっかりテストしてみたわけではありませんがヽ(;´ー`)ノ

214 : >>208,210-211
いえ、
---
00=T0-2;.\BonDriver_PT-T0.dll;.\BonDriver_PT-T1.dll;.\BonDriver_PT-T2.dll
01=T3;.\BonDriver_PT-T3.dll
---
みたいな使い方は可能なハズですよ
この場合、T0-2で正しく録画が始まってるかを確認したい場合は、ロック権を持たないクライアントで
T0-2に接続してみて、チャンネル変更が拒否されるかどうかで一応確認できるでしょうね
#1チューナでしか録画が行われていない状態では、3クライアント繋いでそれぞれ別のチャンネルを
#選択してみないとわかりませんが(;´Д`)

ただお話を聞く感じでは、どのBonDriverを使うのかできるだけ把握したい、と言う感じに聞こえます
その場合はBDP(無印の方)を使う方がやりやすいのではないでしょうかヽ(;´ー`)ノ

215 : >>213
原因が分かりました、おっしゃる通りで2015のランタイムが入ってないことが原因でしたw
tvtestは2015でビルドしても2013までのランタイムで動いてたので気づきませんでした。

で改めて>>188のソース改造してdllを置き換えたんですけども
BCUDの方は
修正済みBondriver_Splitterdllのみ置き換え→起動時>>185のエラー
修正済みBondriver_Splitterdll置き換え+Bondriver_BCUDのバイナリ改造→エラー無し
Bondriver_BCUDのバイナリ改造のみ→エラー無し

という結果になりました。

W3U3の方はすいません、上のように置き換えてみましたがいずれの組み合わせでもチャンネルスキャンで落ちました(>_<)
まあ火急の用事ではありませんのでこちらでもiniの設定ミスがないかまた見てみます。

216 : >>214
なるほど!どうも仕様を勘違いしていたようです
00=PT-T0;BonDriver_SplitterPT-T0.dll
01=PT-T1;BonDriver_SplitterPT-T1.dll
02=PT-T2;BonDriver_SplitterPT3-T0.dll
03=PT-T3;BonDriver_SplitterPT3-T1.dll
04=PT-S0;BonDriver_SplitterPT-S0.dll
05=PT-S1;BonDriver_SplitterPT-S1.dll
06=PT-S2;BonDriver_SplitterPT3-S0.dll
07=PT-S3;BonDriver_SplitterPT3-S1.dll
鯖側Proxyini0-2 4-6 CHANNEL_LOCK=1 3と7 LOCK=0
クライアント全てCHANNEL_LOCK=0
これでうまくできましたチューナ別もロックもバッチリです
お手数をおかけして申し訳ありませんでした。(._.;)
理解できるまでお付き合いいただきありがとうございます。

>ロック権を持たないクライアントでT0-2に接続してみて、
確かに鯖側の環境をそのままコピーしただけだと新しい
プロキシにロック権奪われチャンネル変えられちゃいました;

217 : >>215
基本的に>>188は、>>189と同じ事を、BonDriverを読み込む側で無理やり何とかしようとしてる物です
しかも、
> 修正済みBondriver_Splitterdllのみ置き換え→起動時>>185のエラー
と言う事は、それだけでは対応できないようですね
原因自体は推測した通りだが、別の箇所でも地雷を踏んでいる、と言う事でしょうか…
いずれにせよ、>>189のバイナリ変更を行ったなら>>188の変更は不要ですよ

W3U3の方は、多分同じ問題を持ってはいますが、それだけではなく別件の問題も持っているんでしょう…
バイナリ変更はしておいても良いかと思いますが、別件の問題を引き起こしてる原因を突き止めないと
解決は難しいかも(;´Д`)

なお、TVTestは標準ではランタイム不要な形(/MT)でビルドされるので、2013のランタイムがあるから動いてた、
と言うワケではないと思いますよ
対してBonDriver_Splitterは、標準ではランタイムが必要な形(/MD)でビルドされるようになってます
ビルドオプションを/MTに変更すればランタイム不要にできます
#一応、当方がバイナリ配布する際には/MTビルドした物を使うようにしています

218 : >>216
望む動作に出来たようで良かったです…が、

> 鯖側Proxyini0-2 4-6 CHANNEL_LOCK=1 3と7 LOCK=0
> クライアント全てCHANNEL_LOCK=0

この「鯖側Proxyini」と言うのは、「TvRockが録画用アプリに指定するBonDriver_Proxy.dllの設定ファイル」
と言う意味で使っておられるのですよね?
そうであれば問題無いのですが、BonDriverProxyEx.exe(サーバアプリ)の設定ファイルにCHANNEL_LOCKを書いても
無視されるだけで、もしそこを勘違いされていると録画失敗に繋がりかねないので、ご注意くださいヽ(;´ー`)ノ念の為

219 : >無視されるだけで、もしそこを勘違いされていると録画失敗に繋がりかねないので、ご注意くださいヽ(;´ー`)ノ念の為
ありがとうございますもちろんBonDriver_Proxy.iniに記載しています大丈夫ですバッチリです!(きっと;

220 : >>217
こちらありがとうございます。
/MTビルドの件了解しました、勉強になりました
どちらにしろソースが公開されてない該当Bondriverのバイナリの改造が必要っぽいので、
それをBondriverproxyの作者さんにお願いするのは筋違いなので
いちおうそういう上記の症状があると言うことだけ把握して頂ければ、と思います。

なお、Bondriver_Splitterのiniファイルをtvtestのch2ファイルと照らし合わせてみましたが、チャンネル定義にはミスはありませんでした。

221 : >>207
うちはPX-W3U3を使ってWin8.1ではSpinelで運用してたけど、Win10になってBonProxyExに乗り換えてみましたが
チャンネルスキャンも動いてます。

ビルド環境はwin10上でVS2015、運営環境はwin10でvcredistは2015と2013のみ .NET Frameworkは今は4.6のみで、
TVTest、BonDriver_Splitter、BonDriverProxyExSrv、EDCB(xtne6f 一部他の版混入,ビルドは一部Intel c++)、
Remotetestserver、Smacon2、タイニー番組ナビゲータで運用しています。
TVTestのビルドはVS2015 Win10 で、TVTest-developの1,2ヶ月くらい前の物です。
それ以降のソースの物がビルド後 exe起動時にエラーを吐いて起動すらできない為以前のもので運用してます

後Win10に変えた直後からTVTestがカードリーダー関連のdllを読み込まなくなったため、カードリーダー関連の
ラッパーdllを挟んでみたところ動くようになりました。(不動作、動作理由は理解してません)

参考になるかもしれないのでうちのPX-W3U3環境のBonDriverProxyEx関連iniとチャンネル設定をアップしておきます。
 http://www1.axfc.net/u/3529021

222 : >>221
わざわざありがとうございます。
>>201を見てもらえれば分かると思うんですけど、クライアントから鯖へBonProxyExを通す分にはうちでも正常ですよ
チャンネルスキャンで落ちるのは、自機でBondriver_Splitterを通してドライバを読み込んだときです

223 : チャンネル開いたら絶対他に奪われないロック権限設定が欲しいなぁ

EDCBが録画してBSチューナーが埋まってるとき
設定をみようとEpgDataCap_Bonを開いてしまったら
録画中のチューナーのチャンネルが変ってしまって失敗した

まあ、自分のせいだけど事故防止のために欲しい

224 : >>223
自分も先行ロック優先はちょっとほしいw

225 : 先行チケット、先行予約、先行販売
世の中に先行ほど大事なものはない・・ようなあるようなどっちでもいいようなけど必要なようなでもあってもなくてもいいような
それが先行

226 : >>221
221 です。
なるほどー。 BonDriverProxyExで配信後にSpilterが入っているのですかね? うちの構成はこんな感じですね。

@ TVサーバー機側構成(通常視聴もこれ) S側についても同じ構成なので省略
BonDriver_PX_W3U3_T0→BonDriver_Splitter_T0→BonDriverProxyEx〜〜BonDriver_ProxyT→TVTest
BonDriver_PX_W3U3_T1→BonDriver_Splitter_T1→↑          ↓→BonDriver_ProxyT→EDCB→たいNavi
                                          ↓→BonDriver_ProxyT→RemoteTestserver
                                        TVクライアント機へ

A TVクライアント機側構成 S側についても同じ構成なので省略
  BonDriver_ProxyT →TVTest

TV運用機  Windows10 外付けカードリーダー @
メインPC  Windows10.vhdx-VS2015 ,Windows7.vhd 外付けカードリーダー A
@とAが入れ替わることあり

上記の構成でチャンネルスキャン正常です。
BonDriver_PX_W3U3_T0→BonDriver_Splitter_T0→TVTestだけの構成でもスキャン試してみましたが正常動作します。

ふと思ったのですが、スキャンで落ちているということは自機側のSplitter設定で、スキャンに影響する信号をきっているのでは?
ちなみにうちではこれを切ってます。
DEL=BIT,TOT,M-EIT,L-EIT,SDTT,CDT,TYPED

227 : >>223-224
チャンネルロックを先行優先にしたいと言う要望がそれなりにあるみたいなので、とりあえず追加してみました
#バイナリも更新してます
0〜255の数値で優先度を設定するモデルで、数値の大きな方が優先、同値の場合は対等ですが、
255の場合のみ先行優先の排他となります
適当に思いついただけの設定方法なので、なんか問題ありそうだったら教えてくださいヽ(;´ー`)ノ

228 : >>226
> 上記の構成でチャンネルスキャン正常です。
> BonDriver_PX_W3U3_T0→BonDriver_Splitter_T0→TVTestだけの構成でもスキャン試してみましたが正常動作します。


んん〜?まじですか。ということはうちの環境によるものか…
こちらありがとうございます。
信号の件はTYPED以外は特に設定しておりませんです

229 : >>227
わあ、対応して頂いてありがとうございます。
優先度も使えるのはすごい便利ですね。

>// (そうしないと、優先度255のインスタンスもチャンネル変更できなくなる為)
>m_bChannelLock = 0xfe;
この辺りが不安なので、ターゲットにして試してみました。

TvTestで、
1.クライアント1が優先度255で繋ぐ(BS日テレを開く)
2.クライアント2が優先度255で繋ぐ(BS11を開く)
3.クライアント3が優先度255で繋ぐ(クライアント2のBS11に繋がる)
4.クライアント3は当然チャンネルを変更できない
5.クライアント2を終了させる。
6.クライアント3のチャンネルをBSフジに変える(変更出来るようになった)
7.クライアント4を繋ぐ(BSフジに繋がる)
8.クライアント4は当然チャンネルを変更できない(想定通り)
9.クライアント3を終了させればクライアント4はチャンネルを変更出来る

上記まではOKですが
6.を行わなかった場合、クライアント3の優先度が低いままになってしまいます。

1.〜4.は同上
5.クライアント2を終了させる。
6.クライアント3のチャンネルをいじらない(BS11のまま)
7.クライアント4を繋ぐ(BS11に繋がる)
8.クライアント4がチャンネル変更できる!(排他権をクライアント4取得してる)
9.クライアント3はチャンネルを変更出来ない!(優先度が落ちたまま?)

といった感じになります。
またいろいろ試せたら報告しますね。
よろしくお願い致します。

230 : 追記
クライアント4も優先度255で繋いでいます。

231 : >>229-230
> 6.を行わなかった場合、クライアント3の優先度が低いままになってしまいます。

実はそうなるのは認識していたのですが、255でクライアントAが接続しているところに更に255でクライアントBが
接続してきた状態で、Aが切断されたらBが排他権を引き継ぎたいなんて状況は(ほぼ)無いんじゃないかなーと思ったのと、
仮にそれを行うとして、Aが切断した場合に、一旦落としたBの優先度を再度255に上げる簡単でスマートな方法が
ぱっと思いつかなかったので(BだけでなくCやDが順次同じように255で繋いで来てた場合に、排他権を引き継ぐ優先度を
ちゃんとB>C>Dにする必要があるので)、とりあえずこれで良いかとそのままにした次第です(;´Д`)
基本的に255での接続が同じチューナにカブる事自体がイレギュラーだと思うので、>>223さんのような突発事故が
防げたらそれで良いかなー、みたいなカルいノリですね…

ですが、確かに自分でも若干気持ちは悪かったので、もう少しちゃんと方法考えてみますね
#思いつかなかったり、複雑になりすぎそうな場合は諦めるかもしれませんがヽ(;´ー`)ノ

232 : >>231
返信ありがとうございます。

実は私も書いたあとに同じような感想にはなってたんですよね…
対応するコードが複雑になりそうなわりに、リターンは少なそうだなぁと。

いい方法があれば修正する方がいいとは思いますが
言われてるとおりではありますので、作者さん次第ですね。

233 : 今日Windows10に更新したら
「BonDriverの初期化ができません。」
何が原因だ・・・・

PT3+Windows10
BonDriverProxyEX
TVTest

234 : >>233
今話題のwin10タイマー
インスト、アプデ後1か月でPTシリーズは使えなくなる
http://peace.2ch.net/test/read.cgi/avi/1439723402/

235 : 先週の土曜の朝はちょっとした騒ぎになってたよねWin10でPTシリーズが使えなくなるの
幸いメディアさえ作ってしまえば15分くらいで元通りにできるけど問題はまたありそうだってこと

236 : 時計進めただけで引き継ぎ再インストール後もダメになったってレスあった

237 : Oh...ただのUpdate不具合なのか。MSの狙い打ちかもわからん現状なんデスネ。

238 : PTのドライバー更新されるらしいからバグが直っていればいいけど・・・
もう一度バグ報告してほしいな・・・

239 : BonDriverProxyでスペース0:BS 1:CS(デフォルト)ノンロックで同じチューナ利用して
切り替えると別端末のTvTestのチャンネル情報やステータスバーが切り替わってないっぽ
映ってる番組は切り替わってるのにチャンネル情報と選択されてるチャンネルが切り替わって
ない表記のままなので(旅チャンネル/うまるちゃん)みたいなちぐはぐになってる。
スペースが違うチャンネルの時だけ発生Spinelではちゃんと切り替わってるから内部で
色々やってたんだな。録画に影響はないからプライオリティは低いかもしんないけど報告

240 : >>239
TVTestのチャンネル情報やステータスバーの更新は、BonDriverから読み出したTSデータを使ってTVTest自身が
行っていますので、それに関してはBonDriver側で何かをやっているわけではありません

現在最新のTVTest 0.9.0-devの例では、
例えば、BonDriver_PT-S0.dllを共有して、TVTest1:BS11、TVTest2:BS11の状態から、TVTest2をフジテレビnextに変更すると、
TVTest1はフジテレビoneに変わり、OSDやタイトルバーなども正しく表示されますが、選択スペースはBSのままです
逆に、TVTest1:フジテレビnext、TVTest2:フジテレビnextの状態から、TVTest2をBS11に変更するとTVTest1の映像/音声が
ストップしますが、この状態でもTSデータは正しく配信されており、TVTest1で右クリックからサービスを選択すると
再度再生が始まります(が、選択スペースはやはりCSのままです)

後者の挙動は、TVTestではCSのチャンネルを視聴している時にTSストリームの変更があって、その新ストリーム中に
現在選択しているサービスIDが存在しない場合は、映像/音声を止めるようになっている為です
地上波やBSの視聴時にはそうなっておらず、PATの最初のサービスIDが選択されたものとして振る舞う為、
これが前者と後者の挙動の違いに繋がっています
これは現在のTVTestの仕様なので、恐らくSpinelも含めて、チューナ共有系のアプリではどれでも同じ挙動になるんじゃ
ないかと思いますヽ(;´ー`)ノ

241 : で、このCSのみの挙動を地上波やBSのように最初のサービスIDが選択されるようにして、ついでにBonDriverの
スペース変更も検知してチャンネル情報等も正しく変更されるようにしたい場合は、
http://pastebin.com/xqQSphi4
の変更でそうなります
#githubへのリンクで変更場所を直接示そうとしたらNGワードとか言われて蹴られました(;´Д`)意味わからん

242 : version 1.1.6.0地味に欲しかった機能だ

243 : >>241
あっとまーくとかあの辺蹴られそう

244 : 新しいBonproxy、CHANNEL_LOCK=0のクライアントAから繋いで操作した後、同じ設定のクライアントBから繋いでチャンネル変更すると

IBonDriver を取得できません。
CreateBonDriver() の呼び出しで NULL が返されました。

と出て操作不能になるんだが…
うちだけだろうか?

245 : BonproxyEX、だった。
EXのiniにCHANNEL_LOCK=0を追加したら、直ったかな?

246 : サーバー側のiniってこと?

247 : >>232
とりあえず対応してみました
ただの自己満足だなーと思いながらいじってたら、Exで、255のクライアントで全チューナが埋まっており、
そこに更に255のクライアントAが来て、かつAの最初のチャンネル変更要求が、Aに割り当てられた
BonDriverで既に選局されていた場合、Aの優先度を下げるべきなのに下げていないと言うバグを発見し、
潰すことができましたヽ(;´ー`)ノ

248 : >>244-245
TVTestでそのメッセージがでるのは、チャンネル変更のタイミングではなくBonDriver選択の
タイミングだと思うのですが、もう少し詳しい再現方法がわかれば教えてくださいヽ(;´ー`)ノ
なお、iniのCHANNEL_LOCKの値を読み込んで使用するのは、クライアント側(BonDriver_Proxy.dll)だけですので…

249 : >>247
ありがとうございます。
あとでまた試してみます。

読んでて混乱したけど
後から来たのにチャンネルを変えれてしまうかもしれないバグがあったってことですよね。

250 : >>240
チャンネル変える時にスペース変わってなくて変える時に
選びなおしでイラっとしてたのでこれは助かる・・・。

251 : BonProxyがどんどん便利になっていく

252 : >>249
いえ、後から来た方にチャンネル変更されてしまう事は無いのですが、そのクライアントが切断するまでは、
先に来てた方の排他権限を持ってるクライアントもチャンネル変更できない状態になる場合があった、
ですヽ(;´ー`)ノ

もっとも先日書いた通り、同じチューナに複数のクライアントから排他権限の要求がカブる事自体がおかしいはずですし、
仮に録画中に何らかのミスでこの状態を起こしてしまったとしても、録画中のクライアントのチャンネルが
変更されてしまうわけでもないので、正直実害はほぼ無いかなーとは思いますね…

253 : >>250
当方も>>241の変更は結構気に入っておりますヽ(´ー`)ノ
チューナ共有アプリ使ってて、他のクライアントにチャンネル変更される可能性がある環境では、
こう動いてくれるとちょっと嬉しいですよね

254 : >>252
なるほど、そういうことでしたか。

255 : >>241
これって本家に組み込まれている?
予定あるのかな?

256 : >244だけどやっぱりチャンネル変更を何度かしてると書いた244に書いたメッセージが出て
鯖を再起動しないといけなくなることがある
再現性が不明なので条件がよく分からないんですがBonproxyEXでも以前はなかったと思う

257 : /MTビルドしていたので/MDビルドに戻して様子見

258 : ビルドは無関係でした

障害が発生しているアプリケーション名: BonDriverProxyEx.exe、バージョン: 1.1.6.1、タイム スタンプ: 0x55f22516
例外コード: 0xc0000005
障害オフセット: 0x00012744
障害が発生しているプロセス ID: 0xe3c

259 : >>256
10分くらい似たような感じでチャンネル変え続けたけど起きない
なんかもう少し、手順が絞れれば・・・

260 : Splitter経由でUHFからBSのチャンネルに切り替えたらBonproxyEXが落ちた
環境の問題かも知れないが

261 : >>260
>>256と同じ人だと思うけど、せめて使用環境と設定内容を書くくらいはしなよ
俺のとこでは起きないし、他に報告が無いと言う事は多分他の人にも起きてないんだろうから、
なんか設定が間違ってる可能性が高いんじゃないかと思うけど、なんも書かれてないから
原因の推測すらできない

262 : 馬鹿には無理

263 : 開発者はエスパーじゃないからねえ。

私も、○○したら落ちたとか、起動しないとか言われることあるけど
チューナー切替のような誰でもする当たり前の動作で
ただ単に落ちたとだけ言われても、何も特定できないよどうしろっていうんだよって思うよ

264 : 環境は鯖がwin8.1でクライアントはwin7、win10など4台です。
チャンネル切り替え時にBonProxyEXが落ちるのですが発生条件が特定できないので、鯖のBonproxyEXとService splitterを6月のバージョンに戻して様子見中。
以前はなかった現象なので。

265 : バカにはやっぱ何言っても無駄だった

266 : 朝まで待ち構えて勝利宣言のレスをつけてるかと思うと笑えるわ

267 : >>264
その落ちたときの接続状況とかを完璧に書いてみたらありがたいんじゃないですかね。
各クライアントの設定と一緒に。

268 : 自意識過剰でわらた

269 : もう真面目に報告する気が無くなったw
馬鹿にはつきあえんわ

270 : バカって言われたのが相当悔しいらしいw

271 : 結局、どういう環境なのかよくわからなかったね。
・チューナは何か(PT3なのかPT2なのか、そのほかなのか)
・チューナーは何枚あるのか
・BonDriverは何を使用しているのか
報告内容からすると、この辺の把握が最低限必要だと思うんだけども

272 : 大雑把に書いてもわかる文章はあるけど考え先行すぎて意味が読み解けない
文章ってあるよね。おちついてきちんとまとめてから報告しよう。

273 : 221,226(構成記述)の者ですが、うちでもおちますよー。

Win10になってSpinelから乗り換えて、226のレス書くまでロック権限の改造が入る前の
srcをビルドして使って約1か月程使って、一部おかしかった以外(後述)は落ちることはありませんでした。

9月6に変更が入ったソースをVS2015でビルド後
EDCB側のBonDriver_ProxyT.ini,BonDriver_ProxyS.iniにCHANNEL_LOCK=255,
TVTest側のBonDriver_ProxyT.ini,BonDriver_ProxyS.iniにCHANNEL_LOCK=0を入れて運用しています。
チャンネルを変えるとたまにTVTestが固まって、サービスを見てみるとBondriverExが停止しています。
その時はサービスを起動しなおしています。

最近作者さんが、こまめに変更を入れているようなので、変更が落ち着くまではと、
そのまま使っています。
再現性が100%ではなくたま〜になので、どうすれば落ちると答えようがないのですが・・。
ロック権限の改造後、時々落ちるのは間違いないです。

以前一部おかしかった件ですがロック権限の改造前の時、録画予定のものと違う
チャンネルの番組が録画されていたのでチャンネル設定が間違っているのかと
EpgDataCap_Bon.exeのUDP-Viewを使ってサービスを切り替えていって試してみたところ
そのチャンネルに問題ありませんでした。

続けて全チャンネルの確認をしていくとチャンネルが切り替わらないところが
あり、ch2の設定を確認しましたが問題なく、EpgDataCap_Bon.exeを立ち上げなおして
やってみると今度はうまくチャンネルが切り替わり、更に何度か続けていると
切り替わらないことが発生しました。

Win10後、BonDriver_Spliter〜EDCBまで新しいビルドの物を使っているので
どこのexe,dll,iniがおかしいのか特定できないのと、こちらも再現性が
100%ではなくたま〜になので、前レスで書きませんでしたが一応ご報告を。

続きへ

274 : 続き
作者さんへですが、

BonDriverProxyEx.cpp の1819行の情報ウィンドウでipアドレス表示の所

#ifdef _WIN64
inet_ntop(AF_INET, &(p4->sin_addr), addr, sizeof(addr));
#else
lstrcpyA(addr, inet_ntoa(p4->sin_addr));
#endif

のinet_ntoa ですがVS2015ではwarnning ではなく
error扱いになっているため32bitなおかつサービスでないコンパイルの場合ひっかかります。
コンパイラが inet_ntop()に変更するかdefine _WINSOCK_DEPRECATED_NO_WARNINGS 
でもいいよと言ってきます。

inet_ntoaが同じアドレスに文字列を作ってしまうのを
lstrcpyAで文字列をコピーして対応しておられるうようですが、
inet_ntoaが使用禁止の方向になってきてるようなので前述のように
errorになってしまいます。

ひょっとしてXPの場合inet_ntoaが必要なのかもしれませんが、
64bit側と同じ処理でもいいのではと思い、うちでは
inet_ntop(AF_INET, &(p4->sin_addr), addr, sizeof(addr));
だけ残して後は消してコンパイルしてます。

できればこの辺りご再考をよろしくお願いします。

275 : 273で書き忘れました。

後述の以前一部おかしかった件ですが、ロック権限の改造後は
この現象は見ていません。

276 : >>255
本家developブランチの最新ソースに対するパッチなので、本家には組み込まれてないですよ

CSの場合だけTSストリームから視聴中のサービスIDが消えた時に映像/音声を止めるのは、
フジテレビnextは契約してるけどフジテレビoneは契約していないような場合にPAT先頭サービスを選んだら、
未契約の映像/音声を再生しようとする事になるので、恐らくそうならないように想定しての仕様なのかなと思います

もっとも、現在のTVTest本体はCAS機能を持っておらず、その辺りは気にする必要は無くなってる筈なので、
リクエストしたら取り込まれる可能性もあるかもしれませんね

277 : >>260
えーと皆さん仰ってるように、使用しているBonDriverの種類やBonDriverProxyEx.exeのiniの内容辺りを
教えていただけるでしょうか?
ただ、最近の変更でチューナの共有部分に関する大きな変更は行っていない筈なので、何が原因やら(;´Д`)
確かに設定かなとも思うのですが、設定の問題だと言うには以前のでは起こらなかったという点が謎ではありますね…

278 : >>273-275
報告ありがとうございます
>>277にも書いた通りの感じなので、少しやっかいかもしれません(;´Д`)
手元で再現できないのがツライ…

もし可能であればデバッグビルドしてサービスでない方でデバッグ実行してみて、落ちた場所を
調べていただけるのが一番なのですが、とりあえず当方の配布バイナリで実行してみて、
落ちた時の「障害オフセット」を教えてもらえるとそれだけでも助かります
#自己ビルドではなく当方からの配布バイナリでないと、こちらに当該バイナリが無いので
#「障害オフセット」は参考にできません…

inet_ntoa()の件は、XPにはinet_ntop()が無いので、コンパイルはできても実行できなくなるんです(;´Д`)
当方の配布バイナリはVS2015でビルドしているのですが、ツールセットはv140_xpにしてます
#これならエラーにはなりません
v140でビルドすると確かにエラーになりますね
その場合は既に試されてるように、64bit側と同じ方を使うようにすれば大丈夫ですよ

279 : BonDriverProxyの作者さんはトリップ付けてもらえませんか?
後で過去ログ参照する時とか一目で判別できるので
よろしくお願いします

280 : 273-275 です。

すみません、GitHubのソースの場所ならわかるのですが配布バイナリはどこでしょうか?

281 : >>280
>>3に書いてあるよ

282 : 273-275 です。

落ちた時のエラー ログ2種類取れたので載せておきます。

障害が発生しているアプリケーション名: BonDriverProxyEx.exe、バージョン: 1.1.6.1、タイム スタンプ: 0x55ef5d8a
障害が発生しているモジュール名: ntdll.dll、バージョン: 10.0.10240.16430、タイム スタンプ: 0x55c599e1
例外コード: 0xc0000005
障害オフセット: 0x0003ee01
障害が発生しているプロセス ID: 0xcf4
障害が発生しているアプリケーションの開始時刻: 0x01d0ed6c32a86fa1
障害が発生しているアプリケーション パス: C:\PX-W3U3\BonDriverProxyEx\BonDriverProxyEx.exe
障害が発生しているモジュール パス: C:\Windows\SYSTEM32\ntdll.dll
レポート ID: 42758187-d1cf-4990-98fa-3afe29a0e5f0



障害が発生しているアプリケーション名: BonDriverProxyEx.exe、バージョン: 1.1.6.1、タイム スタンプ: 0x55ef5d8a
障害が発生しているモジュール名: BonDriver_PX_W3U3_S0.dll、バージョン: 0.0.0.0、タイム スタンプ: 0x4d8b6111
例外コード: 0xc0000005
障害オフセット: 0x00012c94
障害が発生しているプロセス ID: 0x184c
障害が発生しているアプリケーションの開始時刻: 0x01d0ed6dd73031fb
障害が発生しているアプリケーション パス: C:\PX-W3U3\BonDriverProxyEx\BonDriverProxyEx.exe
障害が発生しているモジュール パス: C:\PX-W3U3\BonDriverProxyEx\BonDriver_PX_W3U3_S0.dll
レポート ID: 8aeddf15-b3ff-42d2-ae04-17f442e20860

283 : >>279
どうせ大した事は書いてないのですが、検索用ですか…ナルホド
と言う訳で入れてみました
#当方イイカゲンなのでそのうちトリップキー忘れそうですが(;´Д`)

284 : >>282
ntdll.dllとBonDriver_PX_W3U3_S0.dllですか
特にBonDriver_PX_W3U3_S0.dllはGetTsStream()の中で死んでますね
これらを見る限りどうもメモリ破壊っぽいのですが…

もしかしたらBonDriver_PX_W3U3_S0.dll内部での排他ロックがちゃんと行われていなくて、
PurgeTsStream()とGetTsStream()を非同期で呼ぶとメモリ破壊が起きるのかも、と思ったので、
それらとついでにSetChannel()の呼び出しをBonDriver_Splitter側で排他にしてみました
#もしこれで直るようならBonDriver_PX_W3U3内部での排他処理が甘いと言う事でしょう…

また、それとは直接は関係ないのですが、SetChannel()前のサーバ側でのTS破棄は実質ほぼ不要なので、
他のクライアントとインスタンスが共有されていない場合のみ行うようにしました
特にEx版では、自分よりロックの優先度が低い他のクライアントに対して、影響なしに
チャンネル変更できる場合でもTSを破棄してしまう状態が発生するのを無くせたはずです

とりあえずこれで様子見てもらえるでしょうかヽ(;´ー`)ノ

285 : 結構流通してると思われるのにPLEX系のボンドラはソースも公開されてないしダメダメですな

286 : 273-275 です。

SALrG1ld3mTcさん、変更ご苦労様でーす!

現状落ちる気配まったくありません。夕べと今日、
かなりガチャガチャとチャンネルを変えてみたのですが平気なようです。

が・・・・

EDCBで違うチャンネルが録画される病が再発してしまいましたw。

落ちないのを確認終了後、普通に予約録画を入れ録画しているときに、
録画の様子を少し見ようとEpgDataCap_Bonの「View」を見たところ予約指定の番組とは
違うチャンネルの番組になっていました。
この時録画をキャンセルし、EpgDataCap_Bon.exeを1度終了し、
EpgDataCap_Bon.exeをもう1度起動し「View」を見てみる先ほどの番組と同じ物でした。
これはEpgDataCap_Bon.exeの「サービス」のチャンネルとは異なるチャンネルの番組です。

この状態でEpgDataCap_Bon.exeの「サービス」のチャンネルを1度変更すると
指定の正常な番組に切り替わりました。

更にチャンネルを先ほどおかしかったチャンネルに戻すと指定通りの正常な番組が表示されました。
その後何度かチャンネルを変えたり、EpgDataCap_Bon.exeを起動しなおしてみましたが、
正常に動作し異常な状態を再現できませんでした。

この異常はBonDriver〜EDCBのどこで起きているのかまだ把握できていないのと、
意図的な再現方法がわからないのと、
最近TVtest回りいろいろいじっていっているので、我が家の固有の異常である可能性もあるので、
このまま使用を続け、この異常の件何かわかったらまた報告いれます。

287 : >189
TVTestでは、OpenTuner/CloseTunerを別スレッドで行うこともあり、CoInitialize/CoUnInitialize
をBonDriverで行わない方が良いというのは理解できました。
ところがそれだと、EDCBではCoInitializeを行っていないので、BonDriverでCOMライブラリを使うことが出来ません。
そこで例えば、OpenTunerの段階でCOMライブラリを使う必要があるBonDriverを作成する際には、
OpenTuner()の最初で

HRESULT hr;
hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (hr == S_OK)
m_bCoInit = TRUE; //m_bCoInitはGlobal変数
else if (hr == S_FALSE)
::CoUninitialize();
else if (hr != RPC_E_CHANGED_MODE)
return hr;

とした後、CloseTuner()で

if (m_bCoInit)
::CoUninitialize();

あたりが、妥当な実装かと思うのですが、いかがでしょうか。
ご助言を頂けましたら幸いです。

288 : うちのBonDriver_PXがHDUSのsrcを改造したらしいけど、
HDUSのプログラムがOpenTunerでCoUninitialize呼んで
CloseTunerでCoUnInitialize呼んで、
>>287みたいになってますねぇ。

HDUSのソースにうちのチューナー名、キャプチャー名入れて、
少々変更して動かしてみると、フィルターグラフの構築は
BonDriver_PXと同じにできてるのに、フィルターグラフに
runかからない〜♪

BonDriver_BDA改のソースも同じようにうちのチューナー名、キャプチャー
捕まえるようにしてみたけどフィルターグラフに
runかからない〜♪

graphstudionextでMicrosoft DVBT Network Provider〜レンダラまで
繋がるやつで繋いでみたけど
runさえかからない〜♪

ネットワークプロバイダ登録直後のチューニング要求に何か設定いるのかなぁ。

ここで行き詰ってるぅぅ。

誰か動かし方わかる人いたら、この初心者に優しくおしえて!

289 : うっざ

290 : >>286
ひとまず落ちないようにはなったとの事で良かったです
実は>>284の下の方で書いた変更の為、BDPEXも今の物に入れ替えると、当方が落ちる原因になっているのではないかと
推測している状況に殆ど遭遇しないようになっているはずなので、もし可能であればBDPEXは前のバージョンに戻して、
BonDriver_Splitterのみを今の物で試してみてもらえないでしょうか?
それでも落ちないようになっていて初めて、>>284の推測は当たりだったのかなと思えるのでヽ(;´ー`)ノ

別チャンネルになってしまう件は、ちと謎ですね(;´Д`)
その辺の変更は今回何も行っていないはずなのですが…
何だか、チャンネルロックされているチューナに対してチャンネル変更を試みた場合の挙動のようにも思えます
この場合アプリにはチャンネル変更成功に見えるようにしているので、もしそうなった場合、EDCBは録画対象
チャンネルに変更成功したつもりで、別チャンネルを録画してしまうと言うのが起こりそうではあります
例えば、EDCBの設定に対して実チューナ数が不足していたりするとそうなるかもしれませんね

ともあれ、BDPEXとBonDriver_Splitterをデバッグビルドしてみて、Dbgview辺りでログを眺めてみると
何かヒントがあるかもしれません…

291 : >>287
> あたりが、妥当な実装かと思うのですが、いかがでしょうか。

COMの初期化/終了処理はスレッド単位で行う必要があるものなので、単一のグローバル変数でフラグを持つのは
あんまり良くないのではないかとヽ(;´ー`)ノ
例えば、
http://www1.axfc.net/uploader/so/3513652
等は、恐らくその点を考慮してスレッドIDを確認するようにしているのだと推測しますが、いずれにせよ、
OpenTuner()/CloseTuner()が別スレッドで行われる場合の解決にはなっていませんね

また、OpenTuner()/CloseTuner()だけでなく、SetChannel()やGetSignalLevel()等の他のAPIも、
OpenTuner()と呼び出し元スレッドが同一だとは限りません
#事実、例えばTVTestでは異なっています

その様な感じなので、個人的にはEDCB側にCOMの初期化/終了処理を追加する方が正解なんじゃないかな、と思います
やはりスレッドの最初と最後でやるのが確実なので、スレッドをつくった人が行うのがベストではないでしょうか…

292 : >>288
PLEXのチューナは何やら初期化処理がいるようなので、それをやってないからじゃないでしょうか?
linuxのドライバを使用するには、
https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux/blob/a4dd4dc535eed979d1752b0ad3a30e2636ba878c/plex.cpp
な感じの処理が必要(らしい)ですが、これとほぼ同じ処理がBonDriver_PX_W3PE_S0.dllの中にも、
OpenTuner()でフィルタグラフをつくってる辺りにあるようですね

293 : クライアントIP、使用チューナーなども含めて、
チャンネル変更や変更失敗のログとか取れるとわかりやすそうですねえ

294 : >>292
たぶん分かってる気もするんですが報告

優先度255のクライアントA
優先度255のクライアントB
優先度100のクライアントC

クライアントAをBS朝日にします。
クライアントBをBS朝日にします。
クライアントCをBS日テレにします。

たとえば上記の状態で
(ケース1)
クライアントBを「BS11」に変更すると、
クライアントBとCが「BS11」になります。これはOKです。

上記操作はなかったことにして、
(ケース2)
クライアントAをBSフジに変えたとします。
そうすると、クライアントBもBSフジになってしまい、
クライアントCはBS日テレのままになります。

本来、AとBは排他権限で、優先度もCより上なので、
クライアントAはBS朝日→BSフジに
クライアントBは変わらずBS朝日のままに
クライアントCはAに奪われ、BS日テレ→BSフジに
なるのが良いと思うのですが、どうでしょう。

お忙しい中、面倒だとは思いますがよろしくお願いいたします・・・。

295 : >>293-294
> なるのが良いと思うのですが、どうでしょう。

ありがとうございます、確かにその挙動の方が良いですね
もともと優先権有りと無しの二択のみで、かつ有りのクライアントがチャンネル変更出来ない状態と言うのは
考えなくてよかったところから、ご指摘のような挙動になってましたヽ(;´ー`)ノ
対応してみたので確認してみて下さい

ログに関しては以前もリクエストいただいたのですが、あんまり優先度は高くないかなーと思って
後回しにしてしまっております(;´Д`)

296 : >>292

初期化処理の件ありがとうございます。

確かにBonDriverProxy_Linux/plex.cppの40ByteLookupTable1と1024ByteのLookupTable2が
BonDriver_PX内に連続して埋まってるのを確認できました。W3PE用のInterface_W3PE.dllの方にも同じデータテーブルが確認できました。

ただ、BonDriver_PXとInterface_W3PE.dllに2つのデータテーブルの前に1024Byteの似たようなデータが埋まっているのですよ..(汗)。
正直plex.cppの内容については全く理解する知識がないので、ほぼこのままHDUS用ドライバの方に利用させて頂きました。
::open(g_Device, O_RDONLY)を Windows用に::CreateFileに変更し、地上波ドライバのパスを"\\\\.\\usb#vid_0b06&pid_0005#6&26c27801&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed"と固定値で入れ
::ioctlを::DeviceIoControlに変更したらビルドは出来ました。

COMがドライバを開き、こちらでも同じ物を開けるのかと疑問があり、更に処理の意味を理解しないままですが、とりあえず思いつくままチューニング空間作成の直前に入れて動かしてみることにしました。
ドライバのオープンで戻り値はtrue、0x8d81コマンドで戻り値が0xcccccccc、0x8d82コマンドで戻り値は0xccの連続データとなり、0x8d, 0x83とデータの書き込み後フィルタグラフのrunには至りませんでした。

BonDriver_PXをツールを使って見た時、インポート関数にはCreateFile,DeviceIoControlが見当たらないのでおそらく直接ドライバを叩かずにDirctShowの仕組みでチューナー設定を行っていると推測しているのですが、
その処理の方法について情報が全く掴めないため、今後この直接ドライバを叩く方法で初期化処理を探ってみます。

スレ違いな件でしたが、情報大変ありがとうございました。

297 : 意味不明の自家発電書き込みにワロタw

298 : >>295
確認してみました。
意図した動作になっていると思います。

ありがとうございました。

299 : >>296
大変参考になります。
何か進展があれば是非おしえてください。他のPlex製品にも応用できると思いますので。

300 : >>291
詳細な説明ありがとうございます。
当面はスレッドIDをする暫定的な対応しかないですね。

ところで、リンクのソースだとS_FALSEの時の処理が抜けてますね…

301 : >>300
そのソースをうpした者です。
S_FALSEだったらすでにCoInitializeされてるはずであり、2重にCoInitializeは行われていないということなのでそのままにしておくという考えです。
ですから、S_FALSEだった時にはCoUnInitializeも行わないようになっています。
スレッドIDを記憶している理由は、CloseTunerがOpenTunerと別スレッドで呼ばれた場合に
自分以外が行ったCoInitializeを間違ってCoUnInitializeしてしまわないようにしているだけです。
どちらにせよCoUnInitializeする術がないので。

私は、BonDriver側の責任でCoInitializeを行うべきだと思っています。
BonDriverでCOMを使用するかどうかはBonDriver側の都合なので。
今考えているところで一番良いやり方は、BonDriver側でAppとは独立した別スレッドを作成し、
そのスレッドでCoInitialize/CoUnInitializeを含めたすべてのCOM処理を行うのが最善ではないかなと思っています。
近いうちにリンク先にあったBonDriverでそれをやってみたいと思います。

302 : >>301
そう思いがちなのですが違うのです。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms695279(v=vs.85).aspx

each successful call to CoInitialize or CoInitializeEx, including any call that returns S_FALSE, must be balanced by a corresponding call to CoUninitialize.

実は、S_FALSEのSはsuccessもしくはsucceedのSで、S_FALSEでもCoInitializeされてしまうのです。従って、CoUnInitializeが必要になります。

なので、実装として正しいのはS_FALSEの場合はすぐに CoUnInitializeしてやることだと思ってます。

もちろん呼び出しによらず別スレッドで完結できればそれに越したことはないと思います。

303 : >301
可能でしたらCoInitializeExのスレッドモデル教えて頂きたいことがあります。
殆どのBonDriverと同様COINIT_APARTMENTTHREADEDを指定しているようですが、
COINIT_MULTITHREADEDにしない何か理由等ありますでしょうか。

というのも、BonDriver自体は当然ウインドウに絡む処理はありませんし、
TVTestの様に仮に呼び出し元のアプリケーションでウインドウに絡む処理があって、
かつ、同一のスレッドでCOMを使う場合でもアプリケーション側で初期化を行うはずなので
COINIT_MULTITHREADEDで新たに初期化しようとしてもRPC_E_CHANGED_MODEが
返ってくるだけです。

EDCBのようにBonDriver絡みでそもそもCOMを使わない場合はそれこそスレッドモデルは
なんでもいいはず。

さらに、アプリケーション側で、BonDriver側のメモリにアクセスすのはGetTsStream、PurgeTsStreamで、
これらの処理は当然CriticalSectionにしているはずなので、スレッドセーフといえる。

というわけでCOINIT_MULTITHREADEDで問題ないと思っています。
何か見当違いをしているかもしれませんが、その際はご指摘いただけたらありがたいです。

304 : もっともCOINIT_MULTITHREADEDにしたい理由は
「若干のパフォーマンスアップがある、かも」くらいなので、
予期せぬ破綻が起きないために、とりあえずCOINIT_APARTMENTTHREADEDにする、
というのもアリだと思います。

305 : >>296
BonDriver_PX_W3PE_S0.dllがBonDriver_HDUSの改造でつくられていると言うのは多分その通りで、
http://www2.wazoku.net/2sen/hdusup/source/up0233.zip
のソースで言うと、DShowMain.cppの748行目に相当する部分で例の初期化処理を呼んでるようですね

C++なので仮想関数呼び出しになってて、ioctl()に相当するコードが具体的にどうなっているのか
テキトーにバイナリを眺めてるだけでは特定がめんどくさいのですが、PX-W3PEの実機を持ってる方なら
BonDriver_PX_W3PE_S0.dllをロード -> CreateBonDriver() -> OpenTuner()とやって、OpenTuner()の
内部をデバッガで追って行けば、結構簡単に特定できるんじゃないかなと思います

dllのロードアドレス+1040c辺りからが問題の処理なので、ここにブレークポイント置いて
動かしてみるのが手っ取り早いかと…

306 : >>301
> S_FALSE

>>302さんの書かれてる通りですが、MSのAPIにはたまーにこの手の罠がありますね…

> 私は、BonDriver側の責任でCoInitializeを行うべきだと思っています。
> BonDriverでCOMを使用するかどうかはBonDriver側の都合なので。

まあ行うにせよ行わないにせよ、ライブラリの使用方法に制限をかける形になるのは同じで、
単にライブラリが、
---
a. 使用するには呼び出し側での初期化が必要ですが、それを守る限りは自由なAPI呼び出しが可能です
b. 対になるAPIを異なるスレッドから呼び出す事はサポートしませんが、特に前準備無しでも使用可能です
---
のどちらの立場をとるのかと言う話なので、ライブラリ作者の好みの問題ではありますね
#個人的にはa.の方が好きですがヽ(;´ー`)ノ

ただ、そのライブラリのドキュメントやソースが無い場合には、a.のパターンでは最初から動かず、b.のパターンでは
アプリのつくりによって動いたり動かなかったり、と言う感じになるので、どちらがマシかと言う話になります
この場合は、ライブラリユーザ(アプリ作者)としてはa.の形であった方が助かるんじゃないかなーと思ってます…

307 : > 今考えているところで一番良いやり方は、BonDriver側でAppとは独立した別スレッドを作成し、
> そのスレッドでCoInitialize/CoUnInitializeを含めたすべてのCOM処理を行うのが最善ではないかなと思っています。

ですね、非常に有効だと思いますヽ(´ー`)ノ
若干トリッキーではありますが、外部に公開しているAPIの内COMが絡むものは、呼び出されたらイベントをトリガして
実際の処理はそれを受けたワーカースレッドでやり、処理が終わればそれをイベントのトリガ元に通知すると言う形に
すれば、ライブラリ内でCOMの初期化/終了処理を完結できるので、APIの呼び出し方に制限はかからずアプリ側での
初期化/終了処理も不要にできますね
#ちなみに、今のBonDriver_Proxyも(COMを使う目的ではありませんが)似たような実装になっています

308 : >>303-304
COINIT_MULTITHREADEDにするって事はCOM呼びだしのスレッド同期処理は全部自前でやるって事だけど
>>301で書いてるみたいに自前でスレッド起こして無い以上、どっちみちスレッド同期処理とか不可能だよね。

GetTsStream()やPurgeTsStream()がCriticalSectionでガードされてた所で
COMを呼び出すスレッドが同一スレッドである保証なんてどこにもないよ。
ガードされてても別スレッドからの呼出なら、どこかでCoInitialize()しなきゃいけない。

どっちみち>>301の方法以外では別スレッドからの呼びだしなんて解消出来ない。

COMのスレッド周りに関する話は
http://www.kekyo.net/2012/06/16/80
http://www.kekyo.net/2013/07/22/382
この辺が参考になるよ
COMのアパートメント(1)〜(6)は全部読んだ方がいい。

309 : >>302
うわ、完全に勘違いしてました。
確かにそう書いてありますね。
S_FALSEの場合はすぐに CoUnInitializeしてやるのが正解なんですね。
ちなみにRPC_E_CHANGED_MODEが返ってきた場合はどう対処するのが正解なんでしょうか?
(例のソースではこれが返ってきたときのことは想定していません)

COINIT_MULTITHREADEDについては、難しすぎてよく理解できてないんですが、
>>308のとおりBonDriverという立場では使用できないと思ってます。

310 : >>305 ioctl()に相当するコードについての解析記録です。

BonDriver_PX_W3U3_T0.dllの中を解析していくために、BonDriverExの直下にBonDriver_PX_W3U3_T0.dllを組み込む設定にし、BonDriverExを起動。WinDBGをアタッチ。TVTestを起動した。
BonDriverExのm_pIBon->OpenTuner()で一時停止。そこからトントントンと数ステップでdllの中にin。そこからステップ実行で進んでみるがシンボルがある所以外は、何の処理なのか、
今どこにいるのかもわからない。そもそもこれを追っていける解析能力が自分にはない。そこで自分にも出来る別のアプローチをとることにした。

まずはDeviceIoControlがシステム上のどこにあるのか突き止めるため、デバイスドライバをオープンして閉じるだけの短いプログラムを作成。
追って行くとKERNELBASE.dll+オフセットAA680に DeviceIoControlが見つかる。
2ステップ程進んだ call KERNELBASE!GetAdjustObjectAttributesForPrivateNamespaceRoutine+0x18でスタック上に値を入れて戻ってきた。
更に2ステップ程進んだところで、C++上のDeviceIoControl()で64bit設定したマイナーファンクションコードが16bitになってcxレジスタ上に0x8d81が入っていた。これがデバイスドライバに送られる模様。
この時点での呼び出し順は プロセス→kernel32.dllのDeviceIoControl→KERNELBASE.dllのDeviceIoControlであった。

次にBonDriver_PX_W3U3_T0.dllからどうDeviceIoControlが呼ばれるのか調べる為にKERNELBASE.dll.DeviceIoControlに網を張ることにする。
WinDBGに bp KERNELBASE!DeviceIoControl+0xF "j cx==0x8d81'';'g'" とcxレジスタが0x8d81の時停止するように入れてみた。
んー停止せずTVTestが映ってしまった。 ということは@DeviceIoControlが利用されており引数のマイナーファンクションコードがLinuxのドライバと違う、
A別プロセスからドライバに読書されたか、BWindows上の他のシステム関数から読書されたことになりそうだ。

311 : 310 続き

DeviceIoControl以外にデバイスドライバの読書をする関数を知らないので、BのWindows上の他のシステム関数からだと厄介だ...。

@のDeviceIoControlの引数が違う点については、別の側面から疑っている。それは
>>296にも書いたが、pestudio.exeというツールでBonDriver_PX_W3U3_T0.dllを見た時にImported symbolsの中にDeviceIoControlが見当たらない。
kumaさんドライバにも同様にDeviceIoControlが見当たらない。対して上記のデバイスドライバをオープンして閉じるだけの短いプログラムにはkernel32.dllのDeviceIoControlを利用していることが表示される。
ということで、このプロセスからはデバイスドライバに対して直接アクセスしてないのではないかと考えている。

ということで>>296にも書いたが、デバイスドライバに対してDirctShowの仕組み、恐らく別プロセスのCOMサーバー上からデバイスドライバにに設定値を送り込んでいるのではないかと考えている。
フィルタグラフを構築する時に、チューニングスペースオブジェクトかMicrosoft DVBT Network Providerフィルタに設定値を送り込む機能があるのではないか、もしくはチューナーフィルタか
キャプチャフィルタにその機能があるのではないかとも考えている。

この推測に基づいてまずは、DirectShowのCOMサーバーの実体プロセスがあるものと考え、それがどれなのかを調べていくとことにする。

---------
別談だが、pestudio.exeでHDTV_PX_W3U3_BDA.sysを調べた時に嫌なImported symbolを見つけた。
srand(乱数)だ。1024byteのデータ、keyという変数が登場する何かの処理、ここから得られたデータをデバイスドライバに対して上記の方法でデバイスドライバに送るので、
これはもしかしたらこれがこちらから送ったkeyを元にどこかで乱数を加え、 MULTI2暗号化されているデータを更にPlex独自の暗号化をHDTV_PX_W3U3_BDA.sysで施し、
キャプチャフィルタから送出されるのではないかと考えている。
そうなると>>296でも書いた2つのデータテーブルの前の謎の1024Byteのデータテーブルが暗号解読に必要なキーではないかと合点がいく。あくまで推測なので定かではない。

312 : >309
RPC_E_CHANGED_MODEのEはErrorの意味なので、この場合はCoUnInitializeはいらないようです。

スレッドモデルについてですが、もちろん>308に記載の通りにCoInitialize自体を適切なタイミングで行うと仮定して、
まさにwww.kekyo.net/2013/07/22/382を読んでCOINIT_MULTITHREADEDでいいのではないかなと判断しました。
「スレッドで行われる操作が、ウインドウやウインドウメッセージに及ぶ可能性がある場合は、STAとして設定する。」
と書かれているので、単純に、BonDriverにはウインドウは関係ないからMTAでいいかな、と。

313 : ただ、それだと乱暴なのでもう少し考えてみると、BonDriverを呼び出すアプリケーションは
以下の2種類に大別されると思います。

1.アプリケーション側でCOMを使うのでBonDriverを呼び出すスレッドですでに初期化している。(TVTest)
2.そもそもCOMを使わないので初期化もしない。(EDCB)

1.の場合は、仮にBonDriver側でCOINIT_MULTITHREADEDで初期化しようとしても、RPC_E_CHANGED_MODEが
返ってくるだけで、なんの処理も行われないので影響はない。
2.の場合はそもそもアプリケーション側でCOMを呼び出すことがないのでBonDriver側でどのスレッドモデルで
初期化しようが関係ない。

また、アプリケーション側は、BonDriver側がリアルタイムにメモリに溜め込んだTSデータを、アプリケーションの
都合のいい時にGetTsで読み出し、PurgeTsで消去処理を呼び出しているだけなので、特別な同期処理も必要ない
(GetTs, PurgeTsはCriticalsectionに入れているとして)。

というわけでCOINIT_MULTITHREADEDで問題ない様な気がしてます。

ただ、BonDriverProxyもCOINIT_APARTMENTTHREADEDなので、できたらこちらの作者のお話もお聞きしてみたいです。

314 : 呼び出し元のスレッドをアパートメントが設定されてるスレッドに固定できるかどうか、って話なのでは?
呼ばれる側からは内部でCOM専用スレッドとか作らない限り固定出来ないでしょ。

COINIT_APARTMENTTHREADEDにしてるってのは呼び出し元は単一スレッドであることを前提に
メインスレッドから呼んでも大丈夫なようにしてるだけなのでは。

現状でCOM呼び出しがパフォーマンスのネックになってるかどうかも不明なのに
汎用のDLLをわざわざ危険側に倒す思想がよくわからない。

315 : >>292 でおしえて頂いた初期化処理についてですが、どうやらIKsPropertySet インターフェイスを
使っているようです。
>>311で考えた”DirectShowのCOMサーバーの実体プロセス”とやり取りをすると考えたのですが、
これは誤りで同一プロセス内のKsproxy.axフィルタを通してやり取りが行われるようです。
以下その解析記録です。

DirectShowのCOMについてこの項目を読んでいると「あっ」と思うキーワードを見つけた。
https://msdn.microsoft.com/ja-jp/library/cc354739.aspx
「Ksproxy」というキーワードである。
これは実はWinDBGで KERNELBASE!DeviceIoControlの辺りで一時停止させた時に何度も見たもので、
KERNELBASE!DeviceIoControlの呼び出し元となっていた。
説明に「TV チューナー、TV オーディオ、アナログ ビデオ クロスバー、および KsProxy の各フィルタは、
IKsPropertySet インターフェイスによってカスタム ドライバのプロパティをサポートする。」とある。
この時はcxレジスタに0x8d81という値は1度も来なかったので、てっきりKsproxyは他の何等かの他のデバイスドライバ
に対して読書しているのだろうと勝手に思い込んでしまった。
しかしこれは間違いで実はBonDriver_PX_W3U3_T0.dllは同一プロセス内に読み込まれているKsproxy経由で
デバイスドライバに対して初期設定を行っているという思いが強くなってきた。

では何故pestudio.exeでBonDriver_PX_W3U3_T0.dllを調べた時にImported symbolの中にDeviceIoControlが
見つからなかったのか。
pestudio.exeではBonDriver_PX_W3U3_T0.dllが直接アクセスする関数しか表示されない。
その証拠に”デバイスドライバをオープンして(”1度アセクスして”が前回の記述で抜けていた)閉じるだけの
短いプログラム”を作成した時に、直接呼び出しているkernel32.dllのDeviceIoControlの表示しかなかった。
kernel32.dllが更に読みだしているKERNELBASE.dll.DeviceIoControlの表示がなかったのである。
ということでKsproxy経由のDeviceIoControlは表示されることがなかったとなる。

316 : 315 続き

もう一つ疑問がある。
WinDBGに bp KERNELBASE!DeviceIoControl+0xF "j cx==0x8d81'';'g'" とcxレジスタが0x8d81の時停止するように
入れた時になぜ停止することがなかったのか。Ksproxy経由でも停止するはずである。
きっとマイナーファンクションコード(IOCTLコード)0x8d81がLinux用のものと違うはずだ。

そもそもマイナーファンクションコードは、デバイスドライバのプログラムソースがC言語で書かれていると仮定して
ユーザー モードアプリケーションにはWinMainとLRESULT CALLBACKがあるように、デバイスドライバには
DriverEntryとディスパッチルーチンがある。
システムやアプリケーションからデバイスドライバが呼び出されるとDriverEntryで登録されたディスパッチルーチンが
呼び出される。
アプリケーションからDeviceIoControlを実行するとディスパッチルーチンが呼び出され、引数から
メジャーファンクションコードを取り出す処理が行われる。
DeviceIoControlを実行の場合のメジャーファンクションコードはIRP_MJ_DEVICE_CONTROLであり、これを元に
switch case で分岐処理が行われ_IoCtlHandlerを呼び出す。
呼び出された_IoCtlHandlerの引数の中にスタックロケーションの構造体の
xxxx->Parameters.DeviceIoControl.IoControlCodeがある。
この値がマイナーファンクションコード(IOCTLコード)であり
これはswitch case で分岐処理に利用される。
switch caseに設定される定数はプログラマーの設定した値でありなんでもありだ。
この分岐処理の定数に0x8d81が存在すると仮定して解析をやってきたが、今では違う値だと考えている。

KERNELBASE!DeviceIoControlの所の調査からやり直すことにした。
Ksproxy経由でKERNELBASE!DeviceIoControlに来た時のcxレジスタの値を調べてみた。
0x0003 0x0008 0x0007 0x0003 0x000f.........
これらのコマンドとデータを送り込めればチューナーが何か反応するのかも。

317 : 316 続き

これらの解析からIKsPropertySetを使って何等かの初期設定を行ってチューナーに起動をかけていると考えていこう。
上記のMSDNに「アプリケーション ベンダーは、IKsPropertySet インターフェイスのメソッドを使って、
ドライバやフィルタが特定のプロパティ セットをサポートしているかどうかを調べ、それらの
プロパティを取得または設定できる。」とある。

PLEXの提供するCLSIDが必要らしい。
そんな資料ない...。先は随分長そうだ。

318 : >>313
BonDriverProxyの場合は単純に、読み込んだBonDriverがCOMを使っていた場合に、STA/MTAのどっちを想定しているのか
わからないので、安全側に倒すと言う意味でSTAにしています

また、現代のPCの性能ではMTAを使って目に見えてパフォーマンスを上げられるとすれば、まず使用するCOMオブジェクトの
ThreadingModelがFreeかBothであり、かつそのCOMオブジェクトのメソッドをフルスピードで回るループの中から
呼び出しているようなパターンくらいじゃないでしょうか?
BonDriverのAPIのような、昨今のCPUの速度を基準にみるとごく低頻度で呼び出されるだけと言える用途では、
それによる性能改善はほぼ無さそうな気がしますヽ(;´ー`)ノ

319 : そう言えば、COMを使うBonDriverの実装の形として、大体は取得したCOMオブジェクトのインタフェースをメンバ変数に
保持していて、API内部ではそのメンバ変数経由でCOMオブジェクトのメソッドを呼んでいます
この場合、例えばAPI1とAPI2で上記メンバ変数を使用していたとして、アプリがそれらを別スレッドから呼び出した場合、
特に目的のCOMオブジェクトのThreadingModelがSTAに属するものであった場合は、本来のCOMの仕組みから外れた
危ない使い方をしている事になってしまいます
ですが、正しい使い方(律儀に元のインタフェースをマーシャリング/アンマーシャリングして、別スレッドからの
呼び出しであった場合には取得したプロキシ経由でメソッドを呼び出す)をした場合に本来発生する筈の、
WindowメッセージによるCOMのマーシャリングをバイパスして直接メソッド呼び出しになるので、その分の
オーバヘッドは発生しなくなっています

つまり、本来重い(かもしれない)はずのアパートメントをまたいだCOMオブジェクトのメソッド呼び出しですが、
少なくともソースが存在しているBonDriverでの実情としては、上記の通りほぼ単なるメソッド呼び出しとなっているので、
そう言う意味でもSTA/MTAの違いは恐らく有って無いような物ではないでしょうか

またこのようなつくりになっている関係上、その手のBonDriverを利用する際には、OpenTuner()/CloseTuner()/
SetChannel()/GetSignalLevel()辺りの呼び出しはそれぞれ排他にしておいた方が無難なのでしょう
本来はxtne6fさんが行われたこの↓使い方が一番安全なんでしょうけどもヽ(;´ー`)ノ
http://peace.2ch.net/test/read.cgi/avi/1438432913/792n

320 : >>310-311,315-317
当方もさっきまたBonDriver_PX_W3PE_S0.dllを眺めてたんですが、確かにBonDriver_HDUSで言う所の、
CDShowMain::CreateAddTunerDevFilter()成功の後、m_pTunerDeviceにIKsPropertySetをQueryInterface()して、
それ経由でデータの取得や設定を行っているように見えますね
対象のguidPropSetは{9E1781E1-9CB1-4407-BBCE-5426C8D00A4B}、dwPropID==0x0cがlinuxドライバでの0x8d81相当、
0x0dが0x8d82相当、0x09(それが失敗したら0x14)が0x8d83相当かと思います

dwPropID==0x0dで得た16バイトの乱数とシードである
{0x61,0xd8,0x56,0x3d,0xc1,0x15,0x46,0x68,0xb2,0xec,0x6f,0xa9,0xed,0x45,0x33,0x81}
からGetKey()相当の処理を行って鍵を取得し、dwPropID==0x09でドライバにセットと言う流れのようですね
#なお、上記シードはdwPropID==0x09用で、0x14用はまた違う値です
この一連の処理は、>>305にも書いた通りBonDriver_PX_W3PE_S0.dllのロードアドレス+1040c辺りから始まっていますので、
デバッガで動き見るならその辺からで大丈夫だと思います

一応、このIKsPropertySetは他のdwPropIDでSetChannel()やらGetTsStream()の中からも使われているようですが、
その処理が実際に呼ばれるのかどうかはわかりません、と言うか、これ以上は実機での動作が見られないとツライ(;´Д`)

とりあえず上記初期化処理だけやってRun()してみる感じでどうでしょう?

321 : >>318,319
詳細な解説ありがとうございます。
パフォーマンスの実情を踏まえて安全側にふるのはまさにその通りだと思います。

仰る通り、xtne6f氏がEDCBを改良してくれたのでBondriverのCOM問題は実質解決ですね。

322 : >>319
解析おつかれさまです。
詳細な報告、非常に参考になります。

323 : >>320

GIUDとコマンドの件ありがとうございます。
dllからそれを引き出すとは、BonDriverProxyの作者さん、スゴイ解析力ですね!。
とても関心します。

この様に初期化部分を作って   http://www1.axfc.net/u/3537512
動かしてみてます。
結果ですが、確かに[0x0c 読出] [0x0d 読出] [0x14 書込] コマンドとして
全てS_OKで返って来るところまで来たのですが、今の所グラフの動作には至っておりません。
pIKsPropertySetの引数についていまいち理解できないので、おおよその検討で引数を入れています。


後、guidPropSet値なんですが、これをHDUS用のソースに入っているものと比較した時に
同じ9E1781E1なので不思議に思って調べていくと、ドライバのinfを見るとコメントの
記述の仕方が同じ。ドライバーsysの中を調べてみるとASICENとの記述が両方ともに。
ASICENとHDUSとPLEXでネットで検索すると、HDUSもPXシリーズも台湾のASICEN社の
製品だと理解しました。 
それでHDUSとPLEXのリモコンが完全互換なんだと、納得です。

324 : >>323
スミマセン、良く見たらdwPropID==0x14はデスクランブルさせる場合のオプション用っぽかったので、
本筋には関係無さそうでした
#M2_DECオプションを有効にする場合は0x14でそれ用の初期化を行う、みたいな感じっぽいです
その辺もまとめると、多分こんな感じになるのかなと思いますヽ(;´ー`)ノ
http://pastebin.com/KLvqDwir

325 : >>324 結果から言いますと、

ついにフィルタグラフにrunが掛かりました。
チューナーに対する初期設定がうまくいったようです。

現状の改変ソースを参考資料としてアップしてみます。
http://www1.axfc.net/u/3538282
一部constがビルドで引っ掛かるとこがありましたので、
constを抜いて、仮にg_M2_Dec = 0を入れて起動させています。

BonDriverProxyの作者さん。モノスゴイ解析力ですねぇ。
コマンドの解釈や、GetKey2の処理をよく新たに見つけ出したものだと驚きます。

一点質問なのですが、M2_DECオプションを有効にした場合
ハード上もしくはドライバ上でデスクランブルすると解釈して
いいのでしょうか?

326 : >>325
> 一点質問なのですが、M2_DECオプションを有効にした場合
> ハード上もしくはドライバ上でデスクランブルすると解釈して
> いいのでしょうか?

全然調べていませんが、恐らくドライバで行われるんだと思います
linux版のドライバにはまるもさん作の「ARIB STD-B25 仕様確認テストプログラム」が
ほぼそのまま組み込まれているようなので、多分windows版でも同じなんでしょう
#もちろん、内蔵カードリーダにカードを刺しておく事が前提でしょう

327 : あともうちょっと調べたら、>>320で書いた
> 一応、このIKsPropertySetは他のdwPropIDでSetChannel()やらGetTsStream()の中からも使われているようですが、
はやっぱり使われてるみたいですね
特にGetTsStream()から呼ばれる方はコンテンツの復号(MULTI2ではなく独自のスクランブルの)を行うために必須のようです
適当にですがコードに起こしてみました
http://pastebin.com/2cxf0Sb5

SetChannel()の方では、m_pcDShow->SetChFreq( iFreq );の後に、
---
m_pcDShow->SetChannel(BSならtrue CSならfalse, TSID, SID);
---
と言う感じで呼びます
TSIDはそのTSストリームのTSID、SIDは(恐らく)そのTSストリームのサービスの適当なSIDか0で、
これらは(SetChFreq()に渡す周波数とともに)iniファイルから読み出して設定します
なお、この処理はS側のみでT側では必要ありません

GetTsStream()の方では、m_LastBuffにデータを取得した後、
---
m_pcDShow->Decode(m_LastBuff->pbBuff, m_LastBuff->dwSize);
---
と言う感じです
手元にはテストできる環境が無いので、ちゃんと動く可能性はだいぶ低そうですが(;´Д`)

328 : なにこの難解なスレw

329 : >>327 結果からですが。

動きましたーー!。
まだ地上波のみですがTvTestで表示できましたー!

衛星側はまだ作りこまないと何もできませんが、とりあえず地上波側の表示はできました。

>>327 の新しいコードと入れ替えて動かしてみるとTSデータの取得が始まって最初の数秒はパケット数が少ないのですが、
途中からパケットが多くなってそこでエラー停止していたので一時バッファだと思われるバッファをを倍にしてみたところ
動作するようになりました。
このバッファを倍にして他に影響ないのかよく理解していないのですが、とりあえずこれで動きます。

この停止が起きた時に100%ではないのですが、デバイスドライバが離脱することがあることがわかりました。
その辺りの耐久性がないようです。ネットで時々書き込みを見るPLEXチューナーを見失う現象は、
このことではないかと考えています。
このバッファオーバーによるものと思われる対処としては、バッファが溜まり過ぎた時の処理を見直すか、
バッファを増やしてにして他に悪影響ないようであればiniでバッファ量を指定できるようにしようと考えています。

今後はゆっくりですが先に衛星側の作りこみ、チューナーとキャプチャ(現在固定)の選択の仕方変更、
iniでバッファ量を指定、その後TSバッファがらみでメモリコピーを多用しているところがあり、ポインタ処理に
置き換えれば若干パフォーマンスアップを狙えそうな所があるので、その辺りに手を付けるつもりです。

開発資料として現状のソース公開しておきます。

http://www1.axfc.net/u/3539440

BonDriverProxyの作者さん、またまた大感謝です。
これだけのコードを解析から引っ張りだしてくるとは・・・・
今では、何かの実を食べた「能力者」なのではないかと思っていますyo。

330 : >>329
あ、動きましたか
Decode()の処理相当の部分を追いかけてる時に、なんか凄く冗長だったので、無駄だと思われる部分をかなり削って、
でも実はやっぱり必要だったりして…とか少し思ってたんですがヽ(;´ー`)ノともあれ動いたようで何よりです

これらのロジックがちゃんと動くなら、後は普通のBDA系のBonDriverと同じなので、PLEX機器用のBonDriverが
バイナリしかないと言う状況は近々終わりそうですね
どうせならBonDriver_HDUSベースよりも、近年の改良・整理されたBonDriver_BDAをベースにした方が
良いかもしれません
ぜひ良いものをつくって公開して下さいヽ(´ー`)ノ

リンク先のソースでの使用方法をパッと見た感じでは、CBonTuner::RecvProc()でDecode()を呼んでいますが、
呼ぶなら現在の位置ではなく、
---
memcpy(pItem->pbBuff, pSys->m_bRecvBuff, pItem->dwSize);
---
の行の直後に、
---
m_pcDShow->Decode(pItem->pbBuff, pItem->dwSize);
---
とした方が良いんじゃないでしょうか
細かい単位で頻繁にシステムコールを呼び出すよりも、ある程度まとめてから呼んだ方が良いと思うので

また、多分勘違いだと思うのですがCBonTuner::SetChannel()からも呼んでいますが、Decode()は188*nの
単位での呼び出ししか想定していないので、この呼び出しでメモリ破壊が起きてるかも…

あと、もしPLEX_FUNC_0x0CやPLEX_FUNC_0x0Dの呼び出しで得られる結果が毎回同じなら、
鍵(dwKey)は最初に一度つくればDecode()呼び出すたびに毎回つくらなくても良くなりますね

とりあえずそんな感じですよ

331 : >>328
スミマセン、確かにだいぶスレ違いですね…
過去ソースの無いBonDriverでトラブるパターンが結構多かったもので、
ちゃんとソース付きのが出てきたら良いなと…(;´Д`)

332 : まあPLEX系でソースありになればうれしい

333 : PLEXのbondriver専用スレ立ててやるのがいいかもね
ベースが同じだから旧製品からこれから発売される新製品まで全対応出来るし

334 : 世の中すごい人達がいるもんだ
Proxy系にはいつもお世話になってます。あざーっす

335 : >>331
参考になって楽しいですよ。

336 : 難解発言した人も悪気は無いと思うよ
俺は何も理解できなけれど、何かが発展して言ってるというのは、飛ばし読みしてても面白い
嫌いなのは出し惜しみだから

337 : >>333
ASICENじゃないのはまた別に解析が必要そう(GUIDも違う)

338 : 【PLEX】PX-S1UD/BCUD Part4 【ドングル】©2ch.net
http://peace.2ch.net/test/read.cgi/avi/1441037359/

こっちのBCUDの方も頼むわ
必要ならBCUD送るよ

339 : BondriverProxyを使用して1つのチューナーを2つのTVTestから視聴しようと試みています(もちろん同じ番組)
Bondriver_Proxy.dll
Bondriver_Proxy_splitter.dll(splitterを間にかませたもの)
から同時に視聴しようとするとBondrvier_Proxy.exeがクラッシュします(splitterの有無を統一すれば動作)
こういう使い方は無理でしょうか

340 : 考え直してsplitter有りで統一して運用方法を工夫することにしました
1つのチューナーを別のBondriverでって無茶な使い方ですよね。スレ汚しすみませんでした

341 : 新ドライバーでPT2のバグ直ったのかな?

342 : バグとは?

343 : 買ったら新しいPCを生やしてしまうバグ

344 : >>342
32bit Windowsでメモリが4GB以上だと0Mbps病が発症する問題かな?

345 : バグっちゃバグなんだろうけど、どうせ物理アドレス考えれば原理的に使えないんだろうし・・

346 : >>339-340
---
TVTest1 - BonDriver_Proxy.dll --------------------------|- BonDriverProxy - 対象BonDriver
TVTest2 - BonDriver_Splitter.dll - BonDriver_Proxy.dll -|
---
なら可能ですが、
---
TVTest1 - BonDriver_Proxy.dll -|- BonDriverProxy -|- 対象BonDriver(A)
TVTest2 - BonDriver_Proxy.dll -|         |- BonDriver_Splitter.dll - (A)と同じ対象BonDriver
---
はできないです
下の形では、BonDriverProxyと言う一つのプロセスが同じBonDriverを複数回読み込む事になりますが、
大抵のBonDriverは一つのプロセスから複数回読み込まれる事を想定しておらず、その様な使い方をした場合は、
BonDriver内部で管理変数の上書き破壊等が発生する事になります
https://github.com/u-n-k-n-o-w-n/BonDriverProxy/blob/61460a3caf1eaf6adaa785e58a80e8a9e676050a/ReadMe.txt#L65-L67
#で書いてるのはその様な場合の話です

その状態で処理を続けた場合にどうなるのかはそれぞれのBonDriver次第で、またホストプロセスの構造にもよるとは
思いますが、例えばBonDriverProxyがBonDriver_PTやBonDriver_PT3をこのように使用した場合を考えると、
恐らくBonDriver側で管理されているメモリへのアクセスに関してスレッド間での競合が発生し、落ちる事になるでしょう
#これは、ポインタを返す方のGetTsStream()等は非同期で呼び出される事を(恐らくBonDriverのAPIの仕様として)
#想定していない為、スレッド1に返したメモリ領域をまだスレッド1が使用しているのに、スレッド2が解放してしまう、
#と言う事が起こるからです

ダラダラと書きましたが、要はその形での使用はBonDriverProxy側だけで何とかできる範囲ではないので、できないです、
と言う事になります(;´Д`)

347 : ズレた(;´Д`)>>346は当方です

348 : >>338
少し見てみましたが、BonDriverで復号的な事はやっておらず、変わった事やってるのは
SetChannel()とGetSignalLevel()の中くらいにみえますね
その変わった事の内容は
http://pastebin.com/qTDSa8pw
な感じです

http://www1.axfc.net/u/3506839
のBonDriver_BDASのソースなら、
CBonTuner::LockChannel()の中の
---
pIRequest->put_Locator(pILocator);
---
の後で、
---
CustomSetChannnel((WORD)lTSID);
---
みたいに呼んで使います

CustomGetSignalLevel()の方は、CBonTuner::GetSignalLevel()の頭で呼んで、多分RSSIが2バイト値で
返って来るので、これで得た値を元にfloatのCNRとして計算したのを返してるようです
こちらはBonDriver_BDASが行ってるように、BDA標準の方法でとれるなら使う必要は無いかもしれませんね

どっちにしろ、インタフェースの型が良くわからなかったので関数ポインタ経由で無理やり呼び出しており、
まともに機能するかどうかはわかりませんが(;´Д`)

349 : >>346
レスありがとうございます
今は
TVTest1 - BonDriver_Proxy.dll -|--------||------- BonDriverProxy - BonDriver_Splitter.dll - 対象BonDriver(A)
TVTest2 - BonDriver_Proxy.dll -|
のようにしています。これで録画しながら軽くしたTSを視聴したいという目的は達成できました
運用開始直後に一度だけBonDriverProxyがクラッシュしたのですが(慌ててレポート取り逃した)それ以降は何度試しても正常動作しています
たぶん大丈夫でしょう。お手数をお掛けいたしました。素晴らしいソフトに感謝です

350 : >>348
レスありがとうございます
BDASに上げてもらったコード組み込んで試してみます

351 : >>348
教えてもらったコードでTSID指定でBSのチャンネル取れるようになりました
それと動作させるのになんらかの初期化コードが要るようなんですが、わからないですかね?
バイナリで公開されているBondriverでスイッチを入れてからでないと動かないんです

352 : >>351
>>288このあたり以降が関係していないかな?

353 : BonDriver_BDAS Ver.0.03
http://www1.axfc.net/u/3541290

[更新履歴]
Ver. 0.03
・カスタムコード追加によりTSID指定でBSのチャンネルが取れるようになった


これにPLEXチューナーの初期化処理を入れなきゃなんないってことかな?
>>327のやつを組み込めばいいのかな?別のBondriver用みたいだけどね

354 : >>350-353
うーん、とりあえずOpenTuner()終わりまでにはW3PEやW3U3でやってるような特殊な処理は
入ってないように見えますね
基本的に普通のBDA系BonDriverと同じで、BonDriver_BDASで言うところの
CBonTuner::LoadAndConnectTunerDevice()内の、
---
string::size_type n = 0;
wstring semName = displayName;
while ((n = semName.find('\\', n)) != string::npos) {
semName.replace(n, 1, 1, '/');
}
---
が、
---
string::size_type n = 0;
wstring semName = displayName;
bool find = false;
if (semName.find(L"vid_3275", n, 8) != string::npos)
find = true;
if (semName.find(L"pid_0085", n, 8) != string::npos)
find = true;
if (!find)
continue;
while ((n = semName.find('\\', n)) != string::npos) {
semName.replace(n, 1, 1, '/');
}
---
みたいな感じになってるくらいです
あと、m_pTunerDeviceとm_pCaptureDeviceをAddFilter()する時は、friendlyName.c_str()使わずに、
それぞれL"DVB-S Tuner"とL"DVB-S Capture"で固定ですね

355 : BonDriver_BSCSをどのタイミングまで使えばBonDriver_BDASが使えるようになるのかわかるでしょうか?
DLLをロードするだけ、CreateBonDriver()まで、OpenTuner()まで、最初のSetChannel()まで、と少しづつ
機能を使っていって、どの段階でBonDriver_BDASが使えるようになるのかがわかれば、どこに鍵になる処理が
あるのかのヒントになりそうです

…CustomSetChannnel()のChannelをtypoしてるのにさっき気付きました(;´Д`)失礼しました

356 : >>355
わかりました
特殊なチューナー初期化コードは必要ないということなんですね

>BonDriver_BSCSをどのタイミングまで使えばBonDriver_BDASが使えるようになるのかわかるでしょうか?
>DLLをロードするだけ、CreateBonDriver()まで、OpenTuner()まで、最初のSetChannel()まで、と少しづつ

うーん…それはVSのデバッガ使って追わないといけないんですよね
今度時間あるときにやってみますね

357 : >>355
必要ならBCUD送ってもいいですけどね

358 : BonDriver_BDAS Ver.0.04
http://www1.axfc.net/u/3541846

Ver. 0.04
・BonDriver_BDAT Ver.1.05 までの更新内容をだいたい取り込んでおいた
・あとはチューナーのスイッチが入るようになれば完成

359 : >>355,356

356さんとは別人ですけど。
OpenTunerを超えれば使えるようになる様です。

360 : >>359
おお、ありがとうございます
一応ですが、CreateBonDriver()までやっただけでは使えないと言う事ですよね?
OpenTuner()の処理は一通り追ってみたつもりだったんですが、もう少し眺めてみます…

>>357
まあどうしても気になったら自分で買ってきますw

361 : >>360

>一応ですが、CreateBonDriver()までやっただけでは使えないと言う事ですよね?

そうです。

OpenTuner は 13B0 からだと思いますが 1401 から複数出てくる jnz 13F9 を順に
jmp 13F9 に変えつつどこで BonDriver_BSAS.dll で映るようになるか試した所
以下でした。

.text:10001433 jnz short loc_100013F9 を
.text:10001433 jmp short loc_100013F9 に変更

ですのでその直前が怪しいのではないかと思われます。
中身はまだ追えていませんけども。

.text:1000142C call sub_100029B0

362 : ×BonDriver_BSAS.dll
○BonDriver_BDAS.dll (Ver.0.04) です。

363 : >>361-362
おかげでそれっぽい処理見つけられましたヽ(´ー`)ノ
とりあえずざっとコード化してみました
http://pastebin.com/1baKs0Ge
CBonTuner::LoadAndConnectCaptureDevice()の
---
return S_OK;
---
の直前で呼んでみて下さい…

364 : >>363
そのコード自分が入れて試してみましたところ、まだ動かないですね
Channnelのtypoは直しときました

365 : スカパー!用のBonDriver_BDAのInitializeHookと
同じようなことやってるみたいですねえ

366 : -1、-2、-3、-4とかは
E_XXXなどのリターンコードなんでしょうね

367 : いやリターンコードじゃないかもですね
よくもまあCOMを逆汗してCコードに書き直しできましたね

368 : CheckAndSetTunerDependCode(displayName);←ここでInitializeHook()が実行される
// connect 成功なので、このまま関数を終了する
return S_OK;

ホラ、スカパーBonDriver_BDAと同じですね

369 : >>364-368
これだと思ったんですが…
>>363の関数は当方が処理を意訳してコード化しただけなので、エラーコードなども適当に決めた物です
単に、何かがエラーになった場合にどこでエラーになってるのかわかれば良いとの考えなので、
値自体には別に意味はありませんヽ(;´ー`)ノ

> スカパー!用のBonDriver_BDAのInitializeHookと
> 同じようなことやってるみたいですねえ

チューナ毎に違う特殊処理を行うわけですから、似てるのはある意味当然なんでしょうね
もっとも、BonDriver_BSCSの場合はチューナデバイスとキャプチャデバイスを接続した後に、
チューナデバイスの出力ピンに対してIKsPropertySetを要求しているので、若干タイミングが違いますね

とりあえず、その関数がエラーで返って来てるのか、そうでないのかですね
もし-4で返って来てたりするなら、コメントにしてる部分をいかしてみてくれませんか?
---
//BYTE inst[32];
pIKsPropertySet->Set(guidPropSet, 0x500, NULL/*inst*/, 0/*sizeof(inst)*/, &dw, sizeof(dw))
---

---
BYTE inst[32];
pIKsPropertySet->Set(guidPropSet, 0x500, inst, sizeof(inst), &dw, sizeof(dw))
---
#意味があるかどうかよくわからなかったのでコメント化してましたが、必要なのかもしれないです

370 : >>369
すごい!動きました!

371 : GJ
BSCSが選択したTSIDが記憶されてるから
その領域の初期化とかしてんのかな

372 : コメントありの状態だとエラー -4 で、コメントをはずせば動きました。

信号レベル表示が100.00dbから変化しないのですけど皆さんどうです?

373 : なんかチャンネルをマップしたテーブルか構造体をセットするAPIがあった気がする

374 : >>372
WORD rssi = CustomGetSignalLevel();
ってところのrssiから算出するらしいけど、計算法がわからなかったんで
まだやってないです

375 : >>372
うちでも100.00dbから変化しないです

376 : 【PLEX】PX-S1UD/BCUD Part4 【ドングル】©2ch.net
http://peace.2ch.net/test/read.cgi/avi/1441037359/

今後はこちらでやりましょう

377 : BCUDはlinux版のドライバ作ってほしいわ

378 : 横から飛び入り参加で申し訳ないです
PX-W3PE/S3U3系のBonDriverですが、GetSignalLevel()にもカスタム処理が入ってますね
↓みたいな感じで得た値を1/100しているみたいです
http://pastebin.ca/3178992

379 : Win8から対話型サービス ダイアログ検出のウインドウって標準で無効になってるのね
Win10でも、細工したらSpinelとかをサービス化してもセッション0に切り替えてウインドウ出るようになったよ、って報告しときます。

380 : >>369
時間のある時で良いので教えて下さい。

http://www1.axfc.net/u/3506839 にあるWORD CBonTuner::CustomGetSignalLevel() ですが
・BonDriver_BSCS.dll のオフセット 1590 からで良いですか?
・if (w > 0x0bb8) w = 0x0bb8; (0xbb8 = 3000) は不等号が逆だったりしないでしょうか?
if (w < 0x0bb8) w = 0x0bb8;

381 : >>380
その通りで、不等号逆です(;´Д`)失礼しました
直後の処理で3000引いてるので、ここで負の値にならないようにでしょうね…
ちなみにオフセット0x1590はCBonTuner::GetSignalLevel()で、CBonTuner::CustomGetSignalLevel()は
その冒頭の0x15d8までの処理を切り出して当方が勝手に関数化した物です
そこから関数の終わりまで計算をごちゃごちゃやってるのがCNRの計算でしょう
---
float f = (float)CustomGetSignalLevel();
f -= 3000;
f = sqrt(f) / 64;
float f5 = pow(f, 5);
float f4 = pow(f, 4);
float f3 = pow(f, 3);
float f2 = pow(f, 2);
f = (f4 * 14.341f) - (f5 * 1.6346f) - (f3 * 50.259f) + (f2 * 88.977f) - (f * 89.565f) + 58.857f;
return f;
---
多分こんな感じです

>>378
ですね
W3PEの方はドライバからもらった値を小加工して返すだけなのであんまり面倒無いですねヽ(´ー`)ノ

382 : >>381
ありがとうございます。
CNRの計算式まで書いてもらえるとは思ってもいなかったです。

PX-BCUDのCNR計算方法はLinux DVB PT3ドライバと同じですね。
簡単な経緯は以下に。
http://peace.2ch.net/test/read.cgi/avi/1441037359/56

383 : >>381
大体完成したようで何よりですヽ(´ー`)ノ

> PX-BCUDのCNR計算方法はLinux DVB PT3ドライバと同じですね。

そうなんですよねー
コードに起こしてからコレなんか見た事あるなと思って、PT3の旧SDKのソース(WinDriverが
使われてるのでSDKが殆どドライバのソースです)見直してみたら同じコードだったので、
もっと早くに気づいてたら慣れない浮動小数点絡みのアセンブラシコシコ読まなくても
済んだのに、と思いましたヽ(;´ー`)ノ

384 : >>381 ×
>>382
失礼しました…

385 : なんだよおまえら難しい話ばっかりしやがってW3PEユーザーのおれが酒でも奢ってやんよ

386 : W3PEのオプソ版Bondriverは完成したの?
なら買ってくるけど

387 : スレみてると導入すげー大変そう

388 : >>386
完成はしたものの、正直微妙な出来のドライバーをBDAでなんとか動かしている感じのPlex製品より、BonDriverを念頭に設計された(といっても過言ではなさそうな)PTシリーズの方が遥かに良い。
PTシリーズは今だにドライバーのアップデートも行ってくれたし。

389 : >>388
正直微妙というのはPlexのデバイスドライバののと。一応。

390 : >>389
>デバイスドライバののと。
デバイスドライバのこと。

391 : PTのSDKが更新されたから
OPENTUNER_RETURN_DELAY=10
の問題が直ったかと期待したけど放置だった・・・
がっかり

392 : >>391
マジか!
たしか誰かがearthsoftに報告したよね。

393 : 具体的に、Sleep(10)を何処に入れればいいのでしょうか?

if( enISDB == PT::Device::ISDB_T ){
if( iTuner == 0 ){
m_EnumDev[iDevID]->bUseT0 = FALSE;
}else{
m_EnumDev[iDevID]->bUseT1 = FALSE;
}
}else{
if( iTuner == 0 ){
m_EnumDev[iDevID]->bUseS0 = FALSE;
}else{
m_EnumDev[iDevID]->bUseS1 = FALSE;
}
}

394 : bondriverproxyは導入難しいの?
環境新しくするから入れてみようかと思ってたんだが

395 : 当人のレベルによるから難しいのかどうか聞かれても困るよね。
やってみればすぐわかること。

396 : >>393
---
if( enISDB == PT::Device::ISDB_T ){
if( iTuner == 0 ){
m_EnumDev[iDevID]->bUseT0 = TRUE;
}else{
m_EnumDev[iDevID]->bUseT1 = TRUE;
}
Sleep(10); // ここです
}else{
if( iTuner == 0 ){
m_EnumDev[iDevID]->bUseS0 = TRUE;
}else{
m_EnumDev[iDevID]->bUseS1 = TRUE;
}
}
---
必要なのは、CPT1Manager::OpenTuner()とCPT1Manager::OpenTuner2()にだけで、
CPT1Manager::CloseTuner()の似た部分はさわる必要ありませんよ
あと、良かったらこちら↓もどうぞ…
http://peace.2ch.net/test/read.cgi/avi/1430828601/114-121n

>>394
>>395さんもおっしゃってますが、ひとまず試してみてわからない点があれば
聞いていただければと思いますヽ(;´ー`)ノ

397 : >>396
これってPT3でも同様の問題がありますでしょうか?

398 : >>396
ありがとうございます。
やってみます。

399 : >>397
ないと思います。

400 : >>396
327 名無しさん@編集中 sage 2015/10/08(木) 11:44:06.32 ID:q73TjTj5
>>326
コーティング規約云々以前に必要のないSleepが入っているよ。
あと、72行目のNULLも必要ない。
適当に追加しているようだけど、一度全部追ってからの方がいいよ。
反論する前に聞く耳を持ったほうがいい。
正直、不足。

401 : >>400
>>396のは正解のソース。修正が必要なのは別のソース。

402 : 出張なさっておられる

403 : 操作ミスで連投失礼
遅ればせながら
BonDriverProxyにB25パッチ(b25_patch_for_bdpx_ver.1.1.5.5)当てて見ました
BonDriver_PT3(生)->BonDriver_Splitter->BonDriverProxy->LAN->BonDriver_Proxy
->TvTest(0.9.0)
がTVTestのチューナーでチューニング空間が 0:チューニング空間0
1:チューニング空間1
2:チューニング空間2
となってチューニング空間を認識できないようでチャンネルスキャンもできません
TVTestのチューナーから選択すると正常に再生されます
B25パッチを当てていないオリジナルでは正常です
これって、私だけ?
どなたか教えて

404 : 403です
自己解決しました
Proxyのプロパティで文字セットを"設定なし"にしていたためでした
修正して解決です

405 : BonDriverProxyEXでB25デコードをしたいので、宜しければ「bcas_crypt.c」と「decode_ecm.c」をUPして貰えませんか?

エラー 1 error C1083: ソース ファイルを開けません。'arib25\bcas_crypt.c':No such file or directory C:\Users\XXXXX\Desktop\BonDriverProxyEx-master\BonDriverProxyEx\c1 BonDriverProxyEx
エラー 4 error C1083: ソース ファイルを開けません。'arib25\decode_ecm.c':No such file or directory C:\Users\XXXXX\Desktop\BonDriverProxyEx-master\BonDriverProxyEx\c1 BonDriverProxyEx

よろしくお願いします

406 : >>15>>54を揃えればいいんじゃないの?

407 : >>406
そこのソースには「bcas_crypt.c」と「decode_ecm.c」が含まれていなかったんですよ

408 : >>96のパッチを使わなければいいのでは?
うちは>>54を使ったけど。。。

409 : 「bcas_crypt.c」と「decode_ecm.c」は、恐らくその名の通りの機能を持つソースなのでしょう
個人での実験用途でならともかく、一般公開はちと憚られるものではないかと思うので、
ご注意ください…ヽ(;´ー`)ノ

410 : >>407
「bcas_crypt.c」と「decode_ecm.c」は必要ないです
windscard.libのリンクは必要ですが

411 : 間違えた
winscard.lib ね

412 : >>410
ありがとうございます

hoge2014〜からwinscard.libを生成し1.1.5.3をリリースでビルドすると下記エラーが出力されます
エラー 1 error LNK2001: 外部シンボル "__imp__g_rgSCardT1Pci" は未解決です。 C:\Users\XXXXX\Desktop\BonDriverProxyEx-7bcba06c6743eab9a51c3769c10b1c6ad787cf2b\BonDriverProxyEx\b_cas_card.obj BonDriverProxyEx
デバッグでビルドすると出ません。
デバッグでビルドすべきなのでしょうか?

413 : >>412
winscard.libは最初からあなたのパソコンのどこかにインストールされてます
hoge2014〜ってなに

414 : ありがとうございます
BDPXのバージョン間違いやら紆余曲折ありましたが、無事目的を達成できました。

415 : BonDriverProxyですが、サーバ、クライアント同じPCで使う時に
127.0.0.1と指定すると接続できません。Spinelは127.0.0.1で繋がります。
127.0.0.1で繋がるようにならないでしょうか。

416 : 昨日からPTCtrl.exeがカーネルにアクセスしてBSoD(STOP: 0x1000008E)になるんだけど、
この解決方法ってある?
PTCtrl.exe ver. 0.1.3013.0

417 : >>415
繋がるよ。設定がミスっている。
ホスト・クライアント両方を
ADDRESS=127.0.0.1
にする。

418 : B25パッチ、快調ではあるんだが、地元ケーブルテレビの独自放送局だけ復号できない。
TVTest側で復号すると普通に見られるから、B25decoderとlibarib25の処理の違いかな。
エラー数の増え方がゆっくりなので、全パケットの復号に失敗しているわけでもなさそう。

419 : >>417
ありがとうございます。
たしかにホスト、クライアント両方127.0.0.1にすれば繋がりました。
でもそれだと、他のPCからはIPアドレス指定しても繋がらない。
理想としては、SpinelみたいにホストにはIPアドレス指定は不要
クライアントはホストと同じPCなら127.0.0.1、別PCならホストのIPアドレスを指定すれば繋がることです。

420 : 127.0.0.1に拘る理由あるの?

421 : ホストPCを変えるときに設定を変える必要がないためです。

422 : >>419
ホスト側のIPアドレスが192.168.0.xxxだった場合、ホスト側を
ADDRESS=0.0.0.0
にしておけば、
ローカルマシンからのクライアント側では
ADDRESS=127.0.0.1
リモートマシンからのクライアント側では
ADDRESS=192.168.0.xxx
で繋がるようになるよ

423 : >>419
ホストを0.0.0.0にする
全てのポートで待ちうけするようになるよ。

424 : いいこと知った
横からサンクス
>>422,423

425 : 思ったんだけどspinel同様鯖側に設定項目無くして内部的に0.0.0.0デフォにしておいた方がいいんじゃない?
boncasserverなんかもそうなってるし

426 : 最初からガバガバにするのか

427 : >>416
今まで問題無くて、急にそうなったのならメモリが怪しいかと
他には、システムドライブの容量がカツカツだとSTOP:0x1000008Eが起きたりするらしい
あと、もし最近何かのドライバ(あるいはドライバをインストールするソフト)をインストールしたのなら、
それが悪さしてる可能性もあるかも
いかんせん情報不足過ぎるので一般的な事しか言えんね

428 : >>425
普段よく目にするアプリは0.0.0.0がデフォルトのが多いと思うけど、
必要最低限のアドレスだけ待ち受けるってポリシーも、セキュリティ面考えれば理解できる話かと。

何も考えずに実装とか設定ファイル共通化してるだけかもしれないけど

429 : まあ前スレみろよって話だな

==
366 :名無しさん@編集中:2014/06/19(木) 01:08:28.89 ID:iTKsNkq6
ちなみに(クライアント側サーバ側共に)アドレスの指定がされなかった場合は、127.0.0.1を指定されたものとして動作します
なお、サーバ側で全インタフェースにbindしたい場合は0.0.0.0を指定すればそうなります
==


個人的にはこれがどうなった気になる
==
728 :名無しさん@編集中:2014/12/03(水) 20:16:22.94 ID:fBGKVIvq
大抵は0.0.0.0でいいだろうけど
ADDRESS=127.0.0.1;192.168.0.100
みたいな感じで複数アドレス指定できたらいいかなーと思った
全公開はしたくないけどこっちとそっちでは公開したい、みたいなニーズはあるかもしれない

729 :名無しさん@編集中:2014/12/04(木) 06:51:01.70 ID:a0e5T/cN
>>728
ナルホド…
正直需要としては相当ニッチな気はしますが、
対応自体は多分簡単なので、ちょっと試してみます
==

430 : >>425
確か以前にも書いたのですが、>>428さんが書いてる通り、デフォルト0.0.0.0にしてしまうと、そっちにまで
公開するつもりはなかったのに公開してしまっていたと言う場合が出てくる可能性があるので、安全側に倒して
アドレス指定必須にしています
意図しない公開を防ぐには、意図してそうしない限りそうならないようにしておくのが望ましいとの考えからです

>>429
実装方法考えた後コード書くのは良いけどテストめんどくせと思って放置しつつ、
その後IPv6対応とかしてたら忘れてました(;´Д`)
さっきやって更新しときました
今のバージョンならIPv4とIPv6の両方で待てるようになるので、複数インタフェースのマシンでなくても
意味あるかもしれませんね

431 : >>430
更新お疲れ様です。あとで試してみます。

うちはNIC 3枚刺しとかしてるし、
外向けと内向けのNICが違ったりするので役に立ちます。
ありがとうございました。

432 : r2って
d555d2bを適用したものなのかな

433 : >>431
世の中どんな需要があるかわからないものですね…
お役に立つのなら幸いです

>>432
その通りです
変更内容はコミットログに書いてる通りで、ADDRESSに設定された文字列のパース処理で手抜きしてたのを
気になって考え直しただけなので、実際の機能的には20151101と何も変わっていませんヽ(;´ー`)ノ

434 : いつもb25パッチを上げてくださってる方、
どうか今回の1.1.6.4のパッチもお願いします。
出来れば「bcas_crypt.c」と「decode_ecm.c」を使わない方で・・・
お願いします

435 : 手パッチだけでは無理だったの?

436 : 指パッチン

437 : gitで過去バージョンにパッチ当てたブランチ作っておいてバージョン上がるたびにmasterからマージしていった方が楽だよ

438 : >>437
SourceTreeマジおぬぬめ

439 : ローカルの少量パッチならgit rebaseのが楽かな
マージコミットが積み重なるの汚いし

440 : SourceTreeとかどれだけ速いマシン使ってもクソ重くて使ってらんない

441 : 手パッチでいけました

442 : あID変わった
441=434です

443 : >>418ですが、これ調べてみたらVPIDとPCRのPIDが同一だった。PCRのパケットはアダプテーションフィールドだけなのにスクランブル制御のビットがたってるから、TVTestからは100msごとに復号漏れがあるように見える。libarib25を修正して解決しました。

444 : >>443
確かにlibarib25はアダプテーションフィールドだけのパケットは無条件で通常パケット扱いしてますね
実際復号は不要なので、単にスクランブルフラグを下げるかどうかだけの話だったと…
いろんな放送機器があるもんですねー
対応的には、flush_arib_std_b25()とproc_arib_std_b25()の2箇所にある
https://github.com/epgdatacapbon/libarib25/blob/7f75f30f3559a87f99746fdc9ee3c481346d01bd/src/arib_std_b25.c#L614-L640
の部分を
---
if(crypt != 0){
if(hdr.adaptation_field_control & 0x01){
この部分は上記リンクの元ソースのL616-L637と同じ
}else{
curr[3] &= 0x3f;
prv->map[pid].normal_packet += 1;
}
}else{
prv->map[pid].normal_packet += 1;
}
---
に変更する感じでしょうかヽ(´ー`)ノ

445 : >>444
古いバージョンを弄ってない?
すでに修正されていると思う。
公開されていた最終リポは
arib_std_b25_5401e3c7f503 150924
だったはず。

446 : >>444
if((crypt != 0)&&(hdr.adaptation_field_control == 0x02)) curr[3] &= 0x3f;
を加えるだけの修正で済ませてますが、やってることはそのとおりです。
ノンスクランブルの無料放送はVPIDとPCRPIDが同じことが多いみたいですが、この放送ももともとCATV加入者向け無料放送で、その放送にスクランブルをかけて地デジのパススルーにも乗せているようです。

>>445
修正済みのリポがあったんですね。今も入手可能ですか?

447 : >>445
知りませんでしたヽ(;´ー`)ノ
githubでは管理されてないか、github管理でもstz2012版からのforkではないって事かな…

>>446
そもそも映像とPCRのPIDを同じにするのって、ずっとTSの容量削減目的だろうと思ってたのですが、
PCRだけ別パケットで飛ばすのならその効果は無いですし、どのような意図なんでしょうね(;´Д`)

ところで
https://github.com/epgdatacapbon/libarib25/
にさっそく取り込んでいただけたんですね…が、ちと変更ミスされてるようですヽ(;´ー`)ノ
インデントが消されてしまっていてわかりにくいのですが、>>444に書いた変更ではネストが一段
深くなっていて、if(hdr.adaptation_field_control &amp; 0x01)のelseの処理が丸々増えてますよー

448 : >>447
わざわざありがとうございます。
よくわからず取りあえず直してしまったもので。
もしよかったら該当ファイルをどこかに上げて頂けませんでしょうか。

449 : >>448
7f75f30のarib_std_b25.cへのdiffでなら
http://pastebin.com/CCD8YTbG
みたいな感じですよー

450 : >>449
ありがとうございます。
さっそく修正します。

451 : >>450
まだおかしくね?

452 : それのb1とcamelliaバージョン欲しい

453 : ああ、Commit時間みたらこれまだ修正前か
失礼した

454 : >>445
Tor版のリポにあった奴でしょ?
クローズの環境で公開されていたか知らない人が多いんじゃないかな?
それと、>>443の問題あ修正されていないと思う。

arib_std_b25_5401e3c7f503 150924
持っているけどUpしていいのか?
途中の更新内容が理解できるのか・・・

455 : >>454
お願いします

456 : >>447
Razor Lemon HG が Tor板でTortoiseHg使って公開していました。
すでに閉じてしまっています。

457 : >>418 = >>443 = >>446ですが、
https://github.com/epgdatacapbon/libarib25/
の動作も確認しましたので報告しておきますね。
反映ありがとうこざいます。

458 : >457
動作確認ありがとうございます。

459 : >>454
>>456
あー、あっちのリポでしたかヽ(;´ー`)ノ
となると、もしかしたらアレ気な改造が行われてるかもしれないので、全ての変更内容を十分理解した上で、公開しても
大丈夫だなと判断できる場合以外は、下手に公開してしまうと危険かもしれません、ご注意ください…
#単にb25関連だから慎重に…と言うのとは別の次元の話で危ないかもしれないので(;´Д`)

460 : この辺りの話題自体よしたほうがいいね。

461 : B25 patch for BDPex 1.1.6.4 (VS2015用)
http://pastebin.com/sV3pvJ8P

462 : 手パッチでもなんだが通常のは問題ないが
サービス版だとサービス開始できないって怒られるんだよな…

463 : >462
普通にサービスで使えてるけど。Windows10。

464 : 458と461で複合漏れと複合されたけど見られないTS吐き出しが一回ずつ

465 : >>464
とりあえずどっちが問題なのか気になるな。

466 : splitterを通してEDCBを使うと録画に失敗する(再生できない小さいファイルができる)ことがあるんですが、うちだけかな?
splitterを介してBonDriverProxyEXを動かす構成にしていて、BonDriver_ProxyでEDCBとTVTestを使っています。
splitterを介さなければ安定なんだけど、EDCBに優先的にチューナを割り当てることと、TVTestで見るときに帯域を節約することの両立を図りたいんです。

467 : >>466だけど、単にEDCBのChSet4とChSet5がおかしかっただけで、作り直したら解決しました。スレ汚し申し訳ない。

468 : 余計なコードが入っていたので上げ直し。

B25 patch for BDPex 1.1.6.4 (VS2015用)
http://pastebin.com/U37ZPLMj

469 : 余計なコードが入っていたので上げ直し。

B25 patch for BDPex 1.1.6.4 (VS2015用)
http://pastebin.com/U37ZPLMj

470 : >>469
ありがとうございます

471 : >>469
あまり問題になる事は無いとは思うのですが、以前からぼんやりと思ってた事が…
このdecode()の実装の場合、_b25->put()でエラーになった際に、decode()呼び出し側からみると
少なくとも1パケットドロップする(ECMが処理できずにrelease()を呼んだ場合)事になるか、
不必要なデータが追加されてしまう(次回以降の_b25->put()がまた成功した場合)事になりますよね

これを回避する為には、やり方は色々考えられると思いますが、一応当方の手元で期待通りに動いているのは、
b25ライブラリ側へput()がエラーになった場合の処理の変更と、未処理バッファの回収APIの追加を行い、
decode()内でput()がエラーになった場合にはそれらを使って、今までdecode()呼び出し側に返したデータと
一貫性がある(ドロップも追加も無く、ただ復号漏れになる)ように返すデータを調整する、と言う物です

具体的には、put()のエラー処理の方はsbufとdbufのtail位置を呼び出される前の状態に巻き戻し、
未処理バッファの回収APIはsbufのheadからtailまでを返すものをwithdraw()として実装しています
https://github.com/epgdatacapbon/libarib25/tree/b8ae14182e4ed52c4488118ef6aa7d7668ab14d2
へのパッチなら
http://pastebin.com/JpDJFE3c
と言う感じですね
#まず問題にはならない地味なバグ修正や、ECMやEMMをカードへ送るのに失敗した場合のリトライ方法及び
#回数の変更なども含んでいます

472 : 使う側の実装は
http://pastebin.com/sTAGcBy8
みたいな感じです
これを通して録画しながらカードリーダからカードを抜いてみて、録画ファイルにドロップが
発生しないのを期待通りの動作の確認としています
このクラスをEDCBからも使うためにdll使用前提になってたりdecode()のインタフェースが
ちょっと違ってたりしますが、ご参考までにヽ(´ー`)ノ

473 : >471,472
いつもありがとうございます。
早速アップデートさせて頂きます。

474 : 質問させてください。
Windows7からWindows10にアップグレードしてPT3周り安定してたからクリーンインストールしてみたんですが
BonDriverProxyExサービス開始時にiniファイル読み込んでくれなくなりました。
サービス再起動すればiniファイル読み込まれるようです…

サービス再起動せずにiniファイルを読み込ませるにはどうしたらいいでしょか・・・?

Windows10 Pro TH2 x64
BonDriverProxyEx サービス版x64 コミットd555d2b

475 : >BonDriverProxyEx サービス版x64 コミットd555d2b
ではなく
BonDriverProxyEx サービス版x64 コミットe4ea3e8でした

476 : >>472の実装例ですが、よく考えたら_bcasオブジェクトは個別の送受信バッファを持っていて、
ライブラリ内部では特に排他処理が行われてるわけでもないので、そのまま複数のクライアントで
共用するのはまずいですね(;´Д`)
かと言ってアプリ側で_b25->put()を排他にするのはロックの粒度が粗すぎてイマイチだと思うので、
わざわざ参照カウントのような事はやらずに、>>469さん方式で、素直に全部のクライアント用に
ちゃんと_bcasオブジェクトをつくる方が正しそうです…
http://pastebin.com/NWz7B7pY
失礼しました(;´Д`)
ついでと言っては何ですが、一旦パススルー動作にフォールバックしてもクラス使用側は気にせずに
decode()を呼び続ければ、一定時間毎にカード初期化から再チャレンジするようにしてみました

477 : >474-475
えと、win7の頃は問題無かったと言う事でしょうか?
その辺りのコードは以前から何も変更していないので、何だろう…
既に試されたかもしれませんが、一旦サービス登録から削除して、再度登録してみるとかくらいしか
思い付きません…
クリーンインストールなら関係ないかもしれませんが、サービスとしてインストールした時と
実行ファイルの設置パスが変わっており、かつ前のパスにも設定ファイルが残っていたりすると、
一応そんな感じの挙動になりそうな気はします(;´Д`)

478 : >>477
>えと、win7の頃は問題無かったと言う事でしょうか?
Win7の頃とWin7→Win10アップグレード後は問題はなく、Win10クリーンインストールで問題発生です

>一旦サービス登録から削除して、再度登録してみるとかくらいしか
何度もやってみましたがダメでした…

>サービスとしてインストールした時と実行ファイルの設置パスが変わっており
パスは変わってないです…

今のところわかってるのは以下の2つです
・サービスのスタートアップの種類が"自動"だとiniファイル読み込んでくれず、要サービス再起動
・サービスのスタートアップの種類が"自動(遅延起動)"だと問題なくiniファイル読み込んでくれる

遅延起動だと起動遅すぎるので一時しのぎとしてバッチファイルでサービス再起動させています><

479 : パスってどこに置いてるのか

480 : >>479
こちらです
C:\app\TV\BonDriverProxy(x64)\BonDriverProxyEx.exe
C:\app\TV\BonDriverProxy(x64)\BonDriverProxyEx.ini
サービスのパスも同じです

481 : >>478
予想だけど、自動のタイミングのときに読み込むファイルが多すぎてiniの読み込みがタイムアウト
になってるとか?

482 : >>478
なるほど、サービスの起動がタイムアウトしちゃってる可能性はありますね
https://support.microsoft.com/ja-jp/kb/839803
とかを参考に猶予時間を延ばしてみるとか…

そもそもBDPEX自体の起動には時間はかからないはずなので、それでもダメなら多分別の理由だろうと思います
例えばBDPEXのプログラムからはサービスインストール時に他のサービスに対する依存関係は設定していないので、
(そんな事があるのかどうかはわかりませんが)もしTCP/IPドライバより先に起動しようとしたりしてたら
起動がコケる可能性があるのかもしれません
サービスとしてインストールした場合はレジストリの「HKLM\SYSTEM\CurrentControlSet\Services」に
「BonDriverProxyEx」キーがあると思うので、そこに「DependOnService」をREG_MULTI_SZでつくって、
内容を
---
Tdx

---
にすると(TCP/IPドライバに依存している)「NetIO レガシ TDI サポート ドライバー」に依存するように
なると思うので、その状態でどうなるか試してみるとかでしょうかヽ(;´ー`)ノ

483 : >>482,481
タイムアウトになってた場合、イベントログ等に出力されますか?
一応ServicesPipeTimeout 60000とDependOnService Tdxやってみましたが変わらずini読み込まれないですね…

もう一度クリーンインストールしてみてもダメだったので諦めてバッチ走らせるとします…orz
お騒がせしました

484 : >>483
> タイムアウトになってた場合、イベントログ等に出力されますか?

BDPEX側からは特に何もやっていませんが、サービスをコントロールしている側が出力したりするみたいですね
ただ、実際にそうなってるのを見た事が無いので良くわからないです(;´Д`)

サービスの良くわからない挙動と言えば、当方の環境の各マシンの内、録画機だけでW32Time(NTPクライアント)が
自動起動に設定しているのに起動しないのですが、もしかしたら同種の問題なのかな…

485 : > 録画機だけでW32Time(NTPクライアント)が自動起動に設定しているのに起動しないのですが

書いてたら気になってきたのでちゃんと調べてみたら、なんかトリガーが設定されてて
ドメインに参加してないと勝手に止まるようになってました(;´Д`)
トリガー条件を変更したらちゃんと起動するようになりました

その過程でサービスのトリガー起動のやり方を知ったので、メモ
---
// 「IPアドレスが使えるようになったら起動、使えなくなったら停止」に設定する
sc triggerinfo BonDriverProxyEx start/networkon stop/networkoff
#もちろん管理者コマンドプロンプトから
#また、無印BDPの場合は"BonDriverProxyEx"ではなく"BonDriverProxy"で

// トリガーの状態を確認
sc qtriggerinfo BonDriverProxyEx
---

486 : 解決しました…
ini読み込まれないなんて勘違いで
BonDriverProxyEx.iniでADDRESS=192.168.0.xxxにしてたのが原因でした
↑だとシステム起動時のサービス起動ではポートLISTENされないのですね
ADDRESS=127.0.0.1指定したら無事LISTENされました

ini読み込まれなかったらサービス版は起動しないし、通常版はダイアログがでるのですね…
お騒がせして失礼しました。付き合ってくれてありがとうございました

487 : >>486
>>486さんの用途(ローカルマシンからしかアクセスしないとかでしょうか?)では解決したようなので
とりあえずは良かったですが、ADDRESSが127.0.0.1でないとlistenされないと言うのは他のマシンから
アクセスできないと言う事なので、完全な解決ではないですね
サービス起動の種類を手動にして、>>485の様にトリガーを追加すると大丈夫になったりしないでしょうか?

488 : >>487
書き忘れましたが0.0.0.0でもLISTENされます

>sc triggerinfo BonDriverProxyEx start/networkon stop/networkoff
↑を追加し、サービス手動にしてみましたが192.168.0.xxxでLISTENされませんでした;;;

489 : >>488
> 書き忘れましたが0.0.0.0でもLISTENされます

ああ、それならとりあえず大抵の環境では大丈夫そうですね

インタフェースのアドレス指定した場合、トリガーでもダメなのはどうしてでしょうね
start/networkonは「IPアドレスが使えるようになったら」らしいので、
127.0.0.1が使える状態になったけど192.168.0.xxxはまだ使えないタイミングで
トリガーが発行されてる、とかでしょうか…

490 : スレチですが以前、作者さんがTS初心者スレに投下したテレビ東京.tsを修正するtx.zip
オンラインストレージに上げ直してはいかがでしょうか?
斧に置いたままだとファイルが壊れることがあるので・・・

491 : >>490
あら、懐かしい話題が…
あのツールはまだテレ東問題の原因を特定してなかった段階でやっつけでつくったものなので、
とりあえずPMTの並べ替えをするだけのツールですが、
https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux/blob/master/util/splitter.cpp
の-mオプション("PMT defrag")で目的としては大体同じ事ができるので、
それでどうでしょうヽ(´ー`)ノ
#linux用のツールとして置いてますが、winでもコンパイルして使えるようになってます

492 : >>491
別のツールに統合されてたんですね
失礼しました

493 : B25 patch for BDPex 1.1.6.4 (VS2015用、withdraw対応)

http://pastebin.com/3cXNSV4V

494 : >>493
B25Decoder.hの修正を入れ忘れてるような…

495 : >>493
願わくばXPにもご対応を >>66状態

496 : >>494
ライブラリの方に統合されてます。

497 : XPなんかさっさと捨てろよ

498 : >>496
おお、ライブラリが更新されてたのね。ありがとうございます。

499 : >>495
XPの32bit版の話で良いなら、>>493のパッチの48〜56行目の辺りのコメント化されてる部分を
元に戻してから、Win32版のプラットフォームツールセットをv140_xpにしてビルド

500 : >>499
想定内のことだったようで失礼しました
大変ありがとうございます
バッチリです。

501 : パッチがだいぶコンパクトになったようでよいですね

502 : @BonDriverProxyEx.exe
(PT-T=物理T0〜物理Tn,PT-S=物理S0〜物理Sn) ⇒ サーバー側の録画ソフト等



BonDriver_Proxy_PT-S.dll,BonDriver_Proxy_PT-T.dll



BonDriver_Splitter_ST0.dll(00=PT-S,01=PT-T)
〜BonDriver_Splitter_STx.dll(00=PT-S,01=PT-T)



ABonDriverProxyEx.exe
(PT-ST=BonDriver_Splitter_ST0.dll;....;BonDriver_Splitter_STx.dll)) ⇒ クライアントに配信


クライアントへの配信用にBonDriver_Splitterをかけるため上記の様にして運用をしています。
ですが問題が1つ
クライアント側のCHANNEL_LOCK値は当然AのBonDriverProxyEx.exeに効くのですが、
運用上は@にも効いてほしいのです。(むしろ@のほうが問題)

BonDriver_ProxyやBonDriver_Splitterなどの仮想のBonDriverに接続している場合、
CHANNEL_LOCK値を透過する等、対応検討していただけないでしょうか?

503 : >>502
意味がわからんな。少なくとも

@BonDriverProxyEx.exe
(PT-T=物理T0〜物理Tn,PT-S=物理S0〜物理Sn)

BonDriver_Proxy_PT-S.dll,BonDriver_Proxy_PT-T.dll
⇒ サーバー側の録画ソフト等

だろ。

504 : > 当方的には、
> ・サーバ側で使う場合はスプリッタ機能を有効にして読み込むBonDriverとは一対一の関係に
> .・クライアント側で使う場合はスプリッタ機能は使わない
> ・読み込むBonDriverをまとめるのは視聴用のアプリに使う時だけ
> 辺りが無難な使い方かなと思ってます

のとおりにして、必要なボンドラ選択肢の数ぶん、サーバのBDPEX.iniに書き込めばいいだけでは

505 : >>502と似た使い方してるが
AのSplitter.dllを複数用意しなくても@が余ってる限り自動で処理してくれれば最高

506 : 書き込んだあと気付きましたが、当方でも例えば、

EDCBにてプロキシ経由、スプリッタ経由無しぼんどら単独(例えばS0.dll)、ロックあり設定で録画中に
TvTestにてプロキシ、スプリッタ経由有り、ぼんどら複数まとめ、ロック無し設定でアクセスすると、空いてるぼんどらS1.dllをよまずに映像出ません。(スプリッタ経由しないと空きを選んで映像出る)

507 : いまだにスプリッターの使い方がようわからんので上の何言ってるんかさっぱりだわ

508 : >>502
現状サーバがロードしたBonDriverに現在のクライアントのCHANNEL_LOCK値を渡す手段は存在しておらず、
また、そのロードしたBonDriverがBonDriver_Proxy.dllだった時に、それが複数のクライアントから
共有されている場合は、CHANNEL_LOCK値をどのタイミングでどう変化させるかも考慮する必要がありそうなので、
若干変更点が多くなりそうです…
ちょっとやり方を考えてみますが、こりゃ無理だわとなるかもしれません(;´Д`)あまり期待しない方向でお願いします

509 : ちなみに、もしサーバ側の録画ソフトに流れるTSがスプリット済みでも良いのであれば、
// サーバ側BonDriverProxyEx.ini
---
[OPTION]
ADDRESS=0.0.0.0
〜略〜
[BONDRIVER]
00=PT-T;BonDriver_Splitter_PT-T0.dll;BonDriver_Splitter_PT-T1.dll
01=PT-S;BonDriver_Splitter_PT-S0.dll;BonDriver_Splitter_PT-S1.dll
---
// サーバ側BonDriver_Splitter_PT-T0.ini
---
[OPTION]
USESERVICEID=1
〜略〜
[BONDRIVER]
00=BonDriver_PT-T0.dll
---
↑をT0,T1,S0,S1用でそれぞれ用意

ここまでで、例えばPT-Sに接続した場合に、スプリット済みのTSが流れてくるので、

// サーバ側録画ソフト等が使うBonDriver_Proxy.dllのコピー
---
BonDriver_Proxy_PT-S.dll -> CHANNEL_LOCK使って127.0.0.1のPT-Sに接続
BonDriver_Proxy_PT-T.dll -> CHANNEL_LOCK使って127.0.0.1のPT-Tに接続
---

続く

510 : >>509の続き

// クライアント側BonDriver_Splitter_PT.ini
---
[OPTION]
USESERVICEID=0
〜略〜
[BONDRIVER]
00=BonDriver_Proxy_PT-S.dll
01=BonDriver_Proxy_PT-T.dll
---
↑スペース定義はサーバ側のBonDriver_Splitter_PT-S0.iniとBonDriver_Splitter_PT-T0.iniからの
 ほぼコピーで大丈夫なハズ(T側の対象BonDriverNoの書き換え忘れにだけは注意)
// クライアント側BonDriver_Splitter_PT.dllが使うBonDriver_Proxy.dllのコピー
---
BonDriver_Proxy_PT-S.dll -> CHANNEL_LOCK=0でサーバIPアドレスのPT-Sに接続
BonDriver_Proxy_PT-T.dll -> CHANNEL_LOCK=0でサーバIPアドレスのPT-Tに接続
---
こんな感じの設定で、だいたい目的とする動作にできるんじゃないかと思います

この設定でのネガな点としては、既にスプリット済みのTSが録画ソフトに流れる為、もし録画ソフトが賢くて、
同一トラポンの複数サービスの録画を1チューナで行うような機能を持っていたとしても、
その機能が使えない(==チューナ数の節約をできない)点が挙げられます
また、普段の録画動作でEMM処理を行っている場合は、サーバ側のスプリッタでEMMを削除できない
(==BonDriver_Splitterでのネットワークトラフィック削減効果が若干落ちる)点もありますね

この辺のネガな点が無視できるかどうかは、個人の録画環境や運用スタイル次第でしょうね

511 : >>506
おお、なんだろう
クライアント側でBonDriver_Splitterでまとめても、結局はBonDriver_Proxyがサーバ側に
例えばPT-Sの空きをよこせ、と言う形でアクセスするはずなので、その辺は違いはないはずなんですが…
今手元でEDCBの代わりにTVTestを使って簡易的に試してみましたが、一応期待通りの動作をしているようです
詳しい設定内容を書いてもらえると何かわかるかもしれませんヽ(;´ー`)ノ

512 : >>511

>クライアント側でBonDriver_Splitterでまとめても、
すみません、クライアント側でSplitter.dllは使用しておりません
当方の設定は

サーバ側BonDriver_ProxyEX.ini
[BONDRIVER]
00=PT-S0;BonDriver_PT-S0.dll
01=PT-S1;BonDriver_PT-S1.dll
02=PT-T0;BonDriver_PT-T0.dll
03=PT-T1;BonDriver_PT-T1.dll
04=PT-S;BonDriver_PT-S0.dll;BonDriver_PT-S1.dll
05=PT-T;BonDriver_PT-T0.dll;BonDriver_PT-T1.dll
06=PT-SP-S0;BonDriver_Splitter_PT-S0.dll
07=PT-SP-S1;BonDriver_Splitter_PT-S1.dll
08=PT-SP-T0;BonDriver_Splitter_PT-T0.dll
09=PT-SP-T1;BonDriver_Splitter_PT-T1.dll
10=PT-SP-S;BonDriver_Splitter_PT-S0.dll;BonDriver_Splitter_PT-S1.dll
11=PT-SP-T;BonDriver_Splitter_PT-T0.dll;BonDriver_Splitter_PT-T1.dll

ドライバスペース定義をサーバ側にこれだけ作り、
クライアント側ではスペース定義をiniファイルに設定した
BonDriver_proxy_”スペース定義名”.dllを必要な分用意することで
ドライバを選択使用する()

EDCB
\\BonDriver
BonDriver_Proxy_PT-S0.dll
〜略〜
BonDriver_Proxy_PT-T1.dll

TvTest
BonDriver_Proxy_PT-SP-S.dll
BonDriver_Proxy_PT-SP-T.dll

こんな感じで使っています(EDCBはサーバ自身にあり、Bon_Proxy経由設定です)
EDCBと同設定をひとつのTvTestに設定して試してみました。同様の状態になります

513 : >>512
ああ、なるほど…
BDPEXは別のグループに設定されたBonDriverは互いに関係が無いと言う前提で動作しているので、
>>512の設定で言うと、PT-S0を誰かが使っている時に別の誰かがPT-Sをリクエストしてきた場合、
まずはBonDriver_PT-S0.dllを使おうとするでしょう
この場合どうなるかはBonDriverの種類によりますが、基本的にこの状態は避けるようにして下さい…
https://github.com/u-n-k-n-o-w-n/BonDriverProxy/blob/d555d2b88540aa0217512bb023c19fc1ad82b219/ReadMe.txt#L62-L67
↑は無印BDPでの注意書きですが、BDPEXでも同じです
仮に現在それで動いているようにみえても、その状態は多分危険です
具体的には、EDCBもPT-SやPT-Tを使うようにして、EDCBの設定でそれらのチューナ数を2にするなどの方法で
対処する感じになると思います

514 : さて、BonDriver_Splitter_PT-S0.dllの先にはBonDriver_PT-S0.dllがいるのだと思いますが、この場合も同様です
クライアントとしてEDCBがPT-S0を使っているだけの時に、TVTestがPT-SP-Sをリクエストすると、
BDPEXはBonDriver_Splitter_PT-S0.dllを割り当ててロードする事になりますが、BonDriver_Splitterの構造上
これはまず成功します
しかし、実際にチャンネルを変更しようとした際にBonDriver_PT-S0.dllをロードしてCreateBonDriver() ->
OpenTuner() -> SetChannel()しようとするので、恐らくこのどこかで失敗しているのでしょう
いずれにせよこの状態も、同じBonDriver(BonDriver_PT-S0.dll)を同一プロセス(BonDriverProxyEx.exe)から
読み込んでいる状態になるので、上で書いたのと同じく危険であり、避けるようにして下さい

つまるところ現状では、サーバ側で録画ソフト等にはスプリットされていないTSを供給し、
それと同じBonDriverからクライアント側にはスプリットされたTSを送信すると言う事はできないと言う、
かゆいところに手が届かない仕様となっております(;´Д`)

515 : >>508
あくまで主は録画動作で、
クライアントへの配信がちょっと便利になるといいなって程度なので
検討いただけるだけで感謝です。
よろしくお願いします。

516 : >>515
もしかしてやりたい事は、
「サーバ側で録画ソフト等のローカルクライアントにはスプリットされていないTSを供給し、それと同じBonDriverを
 使用してネットワーク越しのクライアントにはスプリットされたTSを送信しつつ、チャンネルロックの設定も
 普通に機能して欲しい」
でしょうか?
もしそうなら、BonDriver_Splitterのみへの小変更で行けそうな気がしています

具体的には、1チャンネル1サービスモードを適用するかどうかをBonDriver_Splitterで定義するスペース毎に
設定できるようにする事を考えていて、例えばSPACE00と01は1チャンネル1サービスモードのBSと110CS、
SPACE02と03はパススルーモードのBSと110CSみたいに設定して、録画ソフトはSPACE02と03を使い、
ネットワーク越しの視聴ソフトはSPACE00と01を使うと言う感じの使い方を想定しています

これならすぐ対応できそうですが、どんなもんでしょうか?

517 : >>513
詳細な説明いたみいります

>>339 レスあたりのことしちゃってますね(;´Д`)

ReadMeは読んでましたが理解していませんでした(;´Д`)
(特にインスタンスの共有)

当方ではSplitterで削るメリットが優先なので
>>346 どおりにクライアント側Splitterでガリガリする運用設定
にしてみます。ありがとうございました

518 : >>516
できればローカルの録画側はシンプルな構成がいいので、
BonDriver_Splitterを挟みたくないですね。

理想を言えば
従来のBonDriverProxyEx.exeのチャンネル割り当て後、
クライアント側のBonDriver_Proxy.dllにSplitしてくれという設定がされていれば、
配信前にBonDriverProxyEx.exe内でSplitして送信してもらえると
複数のBonDriver_Splitter.dllやBonDriverProxyEx.exeが2つ
いらずシンプルに構成できていいかなと思います。

519 : >>518
> クライアント側のBonDriver_Proxy.dllにSplitしてくれという設定がされていれば、
> 配信前にBonDriverProxyEx.exe内でSplitして送信

現在の実装の都合的にこれはちと難しいです(;´Д`)
クライアントがTS分離を要求していたとして、あるBonDriverのあるスペース/チャンネルに
チャンネル変更した際に、クライアントにどのサービスを送信すれば良いのか、現状BDPサーバ側では
知る手段がありません
一応、BDPクライアントの設定項目を大幅に追加/変更し、BDPの通信プロトコルも一部変更すれば
そこはクリアできる可能性も出てきますが、次のハードルとして、クライアントAとクライアントBが
同じBonDriverを要求していて、かつAはTS分離を要求、Bはそのままを要求している場合、
クライアントAのチャンネルnとクライアントBのチャンネルnは対象BonDriverに対しては異なる
チャンネルになる場合が出てくる為、チャンネル共有を行うにはBDPサーバ内部でかなりごちゃごちゃと
対応とる必要が出てくる感じです

BDPのアーキテクチャ的にも、そもそもその名の通りクライアント側からサーバ側のBonDriverへ
なるべく透過的にプロキシ接続すると言うのがモットーなので、BDPサーバ内部であれこれやるのは
できれば避けたいところなのですヽ(;´ー`)ノ

520 : まあこれは正直しょうがないとおもう

521 : とりあえず>>516に関しては、それができて困る事は無さそうなのでBonDriver_Splitterを更新しておきました
USESERVICEIDが[OPTION]での設定から各スペース毎での設定に移動しています
今までのバージョンからこのバージョンに乗り換える場合は、すみませんが現在ご使用のiniの内容変更をお願いします
スペース定義でUSESERVICEIDが設定されていない場合のデフォルト値は1なので、今までの物をUSESERVICEID=0で
使っていた人は特にご注意ください…

なお、サンプルのiniの設定は難視聴を削除したバージョンのBonDriver_PT-S.ChSet.txtに
あわせて更新しておりますので、こちらについてもご注意くださいヽ(;´ー`)ノ

522 : エエー
めんどくさw

523 : スミマセン(;´Д`)
一応、機能的には>>516ができるようになっただけの違いなので、こういう使い方が不要な方は
必ずしも乗り換える必要はありません
なお、iniの内容変更はUSESERVICEIDの行を各スペース定義に機械的に追加するだけですので、
多分30秒くらいあれば終わる作業かと思います…

524 : もしかして結果的に>>339ができるようになったのかな(ゴクリ

525 : これは大歓迎。ありがたいです。

526 : Bondriverproxy_linuxだけど
./sample -b /home/chinachu/BonDriverProxy_Linux/BonDriver_Proxy-T.so -s 0 -c 15 -t 5 test.tsで試したら
意味不明な文字列が流れまくった後に
TS Queue OVERFLOW : size[64]

こんなの出て停止する...

527 : >>526
それ多分標準出力に出力されてる
sampleのファイルへの保存オプションは-oだよ
./sample -b /home/chinachu/BonDriverProxy_Linux/BonDriver_Proxy-T.so -s 0 -c 15 -t 5 -o test.ts

528 : 標準出力にバイナリ垂れ流すって、普段Windows使う上であまり遭遇しないからねぇ

529 : >>527
ありがとうございますm(_ _)m

530 : >>524
BonDriver_Splitterを噛ませる必要がありますが、クライアントが録画ソフトの場合は生TSを、
視聴用ソフトの場合はサービス指定されたTSを送る事ができる、と言う感じですね

ただしもちろん、視聴用ソフトがチャンネルロックせずに視聴中に録画ソフトがチャンネルを持って行った場合、
視聴用ソフト側にも生TSが送られるようになります
要は単に、生TSが流れるチャンネルとサービス指定されたTSが流れるチャンネルとが別々に存在している状態に
できると言うだけですヽ(;´ー`)ノ

531 : 同時に違う内容のTSを流せるわけではないということですね

532 : >>315
>>320

もうすでに解決済みかもしれませんが。
libusbで制御する形でPX-BCUDをLinuxで使えないか調査しているのですが
同じ様にTSが化けて、0x47が出てこないで0xffの塊が周期的に出てくる様な
状態だったのですが、em28178のレジスタ0x5fをLSB=1にするのではく0x81を
出力した所TSが出てきました。

理由は資料が見つけられていないのでわかりませんが、recfsusb2nのソース
だとLSB=1だったのとBonDriver_BSCS.dllのキャプチャ結果だと0x5fを読んで
0x80でLSB=1にして0x81を出力しています。それで、LSB=1だと考えたのですが、
0x80にも意味が有るようです。

http://pastebin.com/Ni6a1CwQ

USBに対する入出力結果を貼っておきます。

まだ、BS1を30秒録画してTSが出てきたというだけの段階です。理解できずに
やっている箇所が多いので必要なことをやっていなかったり余計なことを
やっていると思いますが、何かの参考になれば。

DVBドライバ期待しています。

533 : あああ。間違えた。

534 : >>533
なんだとぉー、適切に謝罪しろ

535 :             __、
     ,r´⌒ヽ,⌒ヽ,ヽ
   (⌒)、   .人  λ\、 .NHK___
    \. \    、 ヽ./ ー  ー\
     |\ \    ヽ./ ( ●) ( ●)
     |  \  \ /     (__人__) \  はいはい、どーもすみませんでした
     |.   \   |       ` ⌒´   |
  .   |.   |.\_ノ\            /
  .   |.   |   |   \______/
  .   |   )  .|     . . ̄ ̄
  .   |   |  .|
     |   |.|  .|
  .   |  | .| .|
     /  / / ヽ,
    (__ノ  ヽ、__つ

536 : NASベースのにUSB接続のBSCSチューナーをつける方向から
いかにPCIeを引き出してPT3付けるかという方向に倒れてしまった。
けど、USBチューナーのドライバ作ってる人頑張って。

537 : BonDriverProxyで他PCのクライアントに配信している時に
サーバー側のWindowsで設定したスリープ移行時間になると
他PCへ配信中にもかかわらずサーバー側がスリープに入ってしまうのですが
配信中にスリープを抑制するにはどうすればいいでしょう?

538 : >>537
http://www.vector.co.jp/magazine/softnews/120905/n1209051.html
こういうソフトで上手く動いてるときにだけ抑制出来るようにするとか?

確実に連携したいならソフトでの対応だろうけど
一度スリープしてしまうと、他のPCから新規に繋げなくなるし難しいところだね

539 : >>538
ありがとうございます
やはり他のソフトを使わないと難しい感じですかね
他PCからのスリープ状態からの起動はWOLがあるのでなんとかなるとは思います

540 : んじゃあまあ、作者待ちってことでね

541 : さすが作者さん速いね。

https://github.com/u-n-k-n-o-w-n/BonDriverProxy/tree/master/BonDriverProxy

542 : おや、既に書いてもらってましたか
さっきバイナリも更新しておきました
ただwin8.1環境でのテストしかできていないので、ちゃんと動かねーよ的な場合は
ご報告いただけると助かります

確かに配信中なのにスリープに入ってしまうのは不便ですよね
当方普段はptTimerを使っており、BonDriver_ptmrを使う限りこの辺りの挙動はptTimer本体が
良きにはからってくれてたので気付いてませんでしたヽ(;´ー`)ノ失礼しました

543 : 何を使ってもvlcがエラーを吐いてエンコを止めてしまう環境の俺には関係無かった。w
グハァッ

544 : ごめん、スレ間違えた。
ヽ(;´Д`)ノ

545 : >>542
おお!早速の実装ありがとうございます!
滅茶苦茶嬉しいです!

546 : EDCBのネットワークTV使ってごまかしてたけど、これで気軽にTVTestから使える
嬉しいわー

mmp2
lud20160128035449cこのスレへの固定リンク: http://2chb.net/r/avi/1428405907/
ヒント:2chスレのurlに http://xxxx.2chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | 動画:Youtube fc2 Tube8 xvideo pornhost >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「BonDriver共有ツール総合 その2©2ch.net ->画像>1枚 」を見た人も見ています:
動画の無圧縮・可逆圧縮が主流になる時代は来るのか (49)
【XviD】変換ツール Junle Movie Gate【Ogg】 (267)
お前らのショボイAvisynthスクリプト貼ってください part4 (128)
【CATV】スカイリウムってどうよ?【スカパー!HD】 (237)
B-CAS不要運動開始 『不要といえば無します』 (866)
塩→野→目→学 完成でTOOL UP!! [転載禁止]©2ch.net (12)
DivX Ultra総合スレッド Part1.divx (67)
カノープス【ADVC-100】Part3 (689)
W3PE Part.13 (45)
Windows頂上対決!Adobe Premiere 対 Sony Vegas (123)
VHS3倍録画偉大説 (243)
VAIOとDVCAM (164)
【CIAも採用した動画高画質化ソフト】vReveal (478)
DVキャプチャ vs D-VHSキャプチャ (397)
【新機種】Canopus MTVX-WHF/SHF総合スレ【マダ〜】 (545)
あなた、Vidomi使ってます? (406)
玄人志向のキャプチャ総合 (206)
ノートパソコンでコンサートをダイレクト収録 (104)
[Avisnth]アプコン技術総合[PS3] (132)
【580円】ピクセラデジタルチューナーOEM【1980円】 (88)
【いまなら】REALmagic VHRecorder【買える】 (415)
デジタルシネマカメラ PMW-F3 (293)
イェクラ Ver.2 (670)
【1Peta-FLOPS】GPGPUについて語ろう【実用間近】 (37)
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】 (871)
NOVAC micro CATCH TV Walker (432)
■■Avid Xpress Pro を語れ■■part 05 (340)
正面オマンコ画像・または正面オマンコ開脚画像4©bbspink.com ->->画像>3872枚
【ロリ】シチュエーションを俺が指定して主に俺が唐驛Xレ [無断転載禁止]©bbspink.com ->->画像>1267枚
興奮するJCの特徴wwwwwwwwww ©2ch.net ->動画>8本->画像>110枚
Futures Entertainment 4©bbspink.com ->動画>3本->画像>19枚
あ→う→ろ→り→万→歳 であう●り(和炉限定)祭りする [無断転載禁止]©2ch.net ->->画像>188枚
22歳で包茎ちんちんなのですが・・・ [無断転載禁止]©bbspink.com ->->画像>9枚
コートコーポレーション93 [無断転載禁止]©bbspink.com ->->画像>45枚
【芸術】男性ヌード写真家総合スレ1枚目【欲望】 [無断転載禁止]©bbspink.com ->動画>4本->画像>134枚
【非18禁】一般誌のエロ漫画スレ5 ©bbspink.com ->->画像>1192枚
寮生活での体験!【第4学年】 [無断転載禁止]©bbspink.com ->->画像>554枚
ホモのKAZUYA唐突に過去ヘイト動画を非公開に [無断転載禁止]©bbspink.com ->動画>6本->画像>11枚
【急騰】ペニルンと雑談スレ 21日目【禁煙無理】 ->動画>4本->画像>26枚
【急騰】ペニルンと雑談スレ 19日目【ヒラツカの賢人】 ->動画>12本->画像>44枚
【吉原】ムーランルージュ Part.3【高級】 [無断転載禁止]©bbspink.com ->->画像>9枚
【モモレンジャー】歴代ピンク徹底議論5【桃色戦士】(ワ有リ) ->動画>4本->画像>15枚
【吉原】メイドマスター part-15【メイドメ[プ】 [無断転載禁止]©bbspink.com ->->画像>5枚
【吉原】ピンポン その26【格安】 [無断転載禁止]©bbspink.com ->->画像>5枚
裸の立ち絵画像を集めようぜ Part29©bbspink.com ->->画像>499枚
三条陸アンチスレ6 ->->画像>6枚
無修正は禁止なの?112スレ [無断転載禁止]©bbspink.com ->->画像>203枚
コイカツ! MODスレ【Illusion/イリュージョン】 [無断転載禁止]©bbspink.com ->->画像>51枚
熟女のだらしない巨乳が好き part3 [無断転載禁止]©bbspink.com ->動画>3本->画像>1179枚
☆★素敵なカラダ 橋本マナミ Part12★☆ [無断転載禁止]©bbspink.com ->->画像>65枚
おねしょが大好き part5 [無断転載禁止]©bbspink.com ->動画>2本->画像>5枚
【チンポ】おちんちんが大好きなゲイ43本【チンコ】 ->->画像>14枚
【ゲイ】●オナニー用おかず画像166●【専用】 [無断転載禁止]©bbspink.com ->動画>8本->画像>711枚
【根本】松戸角海老【岩瀬】Part17 [無断転載禁止]©bbspink.com ->->画像>7枚
コップBBA】株主総会の迷惑な客や行為【お土産6個目 ->->画像>4枚
【新宿・歌舞伎町】深海魚60【ナイスG】 [無断転載禁止]©bbspink.com ->->画像>1枚
スギ薬局社員板Part14 ->->画像>4枚
平成ライダーを何となく見てた俺が批評してみるわ ->->画像>4枚
高校柔道を語りませんか? part27 ->動画>12本->画像>14枚
女の子の裸に萌えるスレ Nude-15 [無断転載禁止]©bbspink.com ->->画像>3791枚
【人♀】 獣姦15 【獣♂】->動画>6本->画像>43枚
【堀之内・TG】グランローズ Part8【旧カンカン娘】 [無断転載禁止]©bbspink.com ->->画像>5枚
小学生のエロリ画像を集めるスレ183ワッチョイ [無断転載禁止]©bbspink.com ->->画像>475枚
【非18禁】一般誌のエロ漫画スレ22 [無断転載禁止]©bbspink.com ->->画像>18枚
陰毛スレ 14本目 [無断転載禁止]©bbspink.com ->->画像>380枚
改造屋登場!!!!!Part35 [無断転載禁止]©bbspink.com ->->画像>133枚

人気検索: 自画撮り オナニー 生理用品交換 セーラー服 本日のあうあうロリ 画像 蟆丞ュヲ 繧ィ繝ュ jk性器 js 盗撮 あうロリ画像 小学生 xviedes 少女 乳輪 画像 胸チラ QVC 黒宮れい
12:24:17 up 85 days, 13:33, 3 users, load average: 3.53, 3.12, 3.18

in 0.048744916915894 sec @0.048744916915894@e11 on 082201