BonDriver共有ツール総合 その2at AVI
BonDriver共有ツール総合 その2 - 暇つぶし2ch250:名無しさん@編集中
15/09/06 09:03:04.05 6iIu3b9W.net
>>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はチャンネルを変更出来ない!(優先度が落ちたまま?)
といった感じになります。
またいろいろ試せたら報告しますね。
よろしくお願い致します。

251:229
15/09/06 09:06:21.76 6iIu3b9W.net
追記
クライアント4も優先度255で繋いでいます。

252:名無しさん@編集中
15/09/06 10:18:45.67 LOpIhx6I.net
>>229-230
> 6.を行わなかった場合、クライアント3の優先度が低いままになってしまいます。
実はそうなるのは認識していたのですが、255でクライアントAが接続しているところに更に255でクライアントBが
接続してきた状態で、Aが切断されたらBが排他権を引き継ぎたいなんて状況は(ほぼ)無いんじゃないかなーと思ったのと、
仮にそれを行うとして、Aが切断した場合に、一旦落としたBの優先度を再度255に上げる簡単でスマートな方法が
ぱっと思いつかなかったので(BだけでなくCやDが順次同じように255で繋いで来てた場合に、排他権を引き継ぐ優先度を
ちゃんとB>C>Dにする必要があるので)、とりあえずこれで


253:良いかとそのままにした次第です(;´Д`) 基本的に255での接続が同じチューナにカブる事自体がイレギュラーだと思うので、>>223さんのような突発事故が 防げたらそれで良いかなー、みたいなカルいノリですね… ですが、確かに自分でも若干気持ちは悪かったので、もう少しちゃんと方法考えてみますね #思いつかなかったり、複雑になりすぎそうな場合は諦めるかもしれませんがヽ(;´ー`)ノ



254:名無しさん@編集中
15/09/06 11:06:21.42 6iIu3b9W.net
>>231
返信ありがとうございます。
実は私も書いたあとに同じような感想にはなってたんですよね…
対応するコードが複雑になりそうなわりに、リターンは少なそうだなぁと。
いい方法があれば修正する方がいいとは思いますが
言われてるとおりではありますので、作者さん次第ですね。

255:名無しさん@編集中
15/09/06 11:36:06.54 7ITjkPZ+.net
今日Windows10に更新したら
「BonDriverの初期化ができません。」
何が原因だ・・・・
PT3+Windows10
BonDriverProxyEX
TVTest

256:名無しさん@編集中
15/09/06 11:54:53.23 KZnSYS1K.net
>>233
今話題のwin10タイマー
インスト、アプデ後1か月でPTシリーズは使えなくなる
スレリンク(avi板)

257:名無しさん@編集中
15/09/06 14:44:19.27 njts2/1u.net
先週の土曜の朝はちょっとした騒ぎになってたよねWin10でPTシリーズが使えなくなるの
幸いメディアさえ作ってしまえば15分くらいで元通りにできるけど問題はまたありそうだってこと

258:名無しさん@編集中
15/09/06 16:16:10.38 i1y+ii65.net
時計進めただけで引き継ぎ再インストール後もダメになったってレスあった

259:名無しさん@編集中
15/09/06 16:23:11.16 7ITjkPZ+.net
Oh...ただのUpdate不具合なのか。MSの狙い打ちかもわからん現状なんデスネ。

260:名無しさん@編集中
15/09/06 21:02:50.56 s0D0oWRB.net
PTのドライバー更新されるらしいからバグが直っていればいいけど・・・
もう一度バグ報告してほしいな・・・

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

262:名無しさん@編集中
15/09/07 23:38:59.40 hfzke3E2.net
>>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の視聴時にはそうなっておらず、


263:PATの最初のサービスIDが選択されたものとして振る舞う為、 これが前者と後者の挙動の違いに繋がっています これは現在のTVTestの仕様なので、恐らくSpinelも含めて、チューナ共有系のアプリではどれでも同じ挙動になるんじゃ ないかと思いますヽ(;´ー`)ノ



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

265:名無しさん@編集中
15/09/08 00:26:34.97 AnJL88Y7.net
version 1.1.6.0地味に欲しかった機能だ

266:名無しさん@編集中
15/09/08 22:11:46.03 WK5DcaBx.net
>>241
あっとまーくとかあの辺蹴られそう

267:名無しさん@編集中
15/09/09 02:00:58.28 gpdKgc3u.net
新しいBonproxy、CHANNEL_LOCK=0のクライアントAから繋いで操作した後、同じ設定のクライアントBから繋いでチャンネル変更すると
IBonDriver を取得できません。
CreateBonDriver() の呼び出しで NULL が返されました。
と出て操作不能になるんだが…
うちだけだろうか?

268:名無しさん@編集中
15/09/09 05:56:52.59 gpdKgc3u.net
BonproxyEX、だった。
EXのiniにCHANNEL_LOCK=0を追加したら、直ったかな?

269:名無しさん@編集中
15/09/09 08:11:22.44 OroZrpia.net
サーバー側のiniってこと?

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

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

272:名無しさん@編集中
15/09/09 09:06:59.13 55Sf/lZ6.net
>>247
ありがとうございます。
あとでまた試してみます。
読んでて混乱したけど
後から来たのにチャンネルを変えれてしまうかもしれないバグがあったってことですよね。

273:名無しさん@編集中
15/09/09 13:14:09.82 Nk+YlJ1J.net
>>240
チャンネル変える時にスペース変わってなくて変える時に
選びなおしでイラっとしてたのでこれは助かる・・・。

274:名無しさん@編集中
15/09/09 16:13:49.65 I6d8TK6d.net
BonProxyがどんどん便利になっていく

275:名無しさん@編集中
15/09/09 20:53:37.64 ZcGrXdhp.net
>>249
いえ、後から来た方にチャンネル変更されてしまう事は無いのですが、そのクライアントが切断するまでは、
先に来てた方の排他権限を持ってるクライアントもチャンネル変更できない状態になる場合があった、
ですヽ(;´ー`)ノ
もっとも先日書いた通り、同じチューナに複数のクライアントから排他権限の要求がカブる事自体がおかしいはずですし、
仮に録画中に何らかのミスでこの状態を起こしてしまったとしても、録画中のクライアントのチャンネルが
変更されてしまうわけでもないので、正直実害はほぼ無いかなーとは思いますね…

276:名無しさん@編集中
15/09/09 20:55:51.65 ZcGrXdhp.net
>>250
当方も>>241の変更は結構気に入っておりますヽ(´ー`)ノ
チューナ共有アプリ使ってて、他のクライアントにチャンネル変更される可能性がある環境では、
こう動いてくれるとちょっと嬉しいですよね

277:名無しさん@編集中
15/09/10 12:18:11.52 SiEUBWxt.net
>>252
なるほど、そういうことでしたか。

278:名無しさん@編集中
15/09/10 16:42:55.55 0Mv4TuSo.net
>>241
これって本家に組み込まれている?
予定あるのかな?

279:名無しさん@編集中
2015/09/


280:11(金) 04:05:06.67 ID:pyQsqCFg.net



281:名無しさん@編集中
15/09/11 09:58:02.91 pyQsqCFg.net
/MTビルドしていたので/MDビルドに戻して様子見

282:名無しさん@編集中
15/09/11 10:08:15.92 pyQsqCFg.net
ビルドは無関係でした
障害が発生しているアプリケーション名: BonDriverProxyEx.exe、バージョン: 1.1.6.1、タイム スタンプ: 0x55f22516
例外コード: 0xc0000005
障害オフセット: 0x00012744
障害が発生しているプロセス ID: 0xe3c

283:名無しさん@編集中
15/09/11 12:59:44.62 UVBZn+Y7.net
>>256
10分くらい似たような感じでチャンネル変え続けたけど起きない
なんかもう少し、手順が絞れれば・・・

284:名無しさん@編集中
15/09/11 15:02:36.81 8d+klU/R.net
Splitter経由でUHFからBSのチャンネルに切り替えたらBonproxyEXが落ちた
環境の問題かも知れないが

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

286:名無しさん@編集中
15/09/11 21:00:04.54 8phWfh86.net
馬鹿には無理

287:名無しさん@編集中
15/09/12 04:12:07.18 1hlEtHdd.net
開発者はエスパーじゃないからねえ。
私も、○○したら落ちたとか、起動しないとか言われることあるけど
チューナー切替のような誰でもする当たり前の動作で
ただ単に落ちたとだけ言われても、何も特定できないよどうしろっていうんだよって思うよ

288:名無しさん@編集中
15/09/12 07:59:47.99 FreM+lvw.net
環境は鯖がwin8.1でクライアントはwin7、win10など4台です。
チャンネル切り替え時にBonProxyEXが落ちるのですが発生条件が特定できないので、鯖のBonproxyEXとService splitterを6月のバージョンに戻して様子見中。
以前はなかった現象なので。

289:名無しさん@編集中
15/09/12 08:02:44.68 AXuWCNzY.net
バカにはやっぱ何言っても無駄だった

290:名無しさん@編集中
15/09/12 08:04:09.07 FreM+lvw.net
朝まで待ち構えて勝利宣言のレスをつけてるかと思うと笑えるわ

291:名無しさん@編集中
15/09/12 08:04:30.94 1hlEtHdd.net
>>264
その落ちたときの接続状況とかを完璧に書いてみたらありがたいんじゃないですかね。
各クライアントの設定と一緒に。

292:名無しさん@編集中
15/09/12 08:05:33.31 AXuWCNzY.net
自意識過剰でわらた

293:名無しさん@編集中
15/09/12 08:06:20.80 FreM+lvw.net
もう真面目に報告する気が無くなったw
馬鹿にはつきあえんわ

294:名無しさん@編集中
15/09/12 08:08:15.86 AXuWCNzY.net
バカって言われたのが相当悔しいらしいw

295:名無しさん@編集中
15/09/12 08:23:35.00 1hlEtHdd.net
結局、どういう環境なのかよくわからなかったね。
・チューナは何か(PT3なのかPT2なのか、そのほかなのか)
・チューナーは何枚あるのか
・BonDriverは何を使用しているのか
報告内容からすると、この辺の把握が最低限必要だと思うんだけども

296:名無しさん@編集中
15/09/12 14:58:06.86 54xOvvXZ.net
大雑把に書いてもわかる文章はあるけど考え先行すぎて意味が読み解けない
文章ってあるよね。おちついてきちんとまとめてから報告しよう。

297:名無しさん@編集中
15/09/12 16:41:33.53 jRNX7Trl.net
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を入れて運用しています。
チャンネルを変えると�


298:スまにTVTestが固まって、サービスを見てみるとBondriverExが停止しています。 その時はサービスを起動しなおしています。 最近作者さんが、こまめに変更を入れているようなので、変更が落ち着くまではと、 そのまま使っています。 再現性が100%ではなくたま~になので、どうすれば落ちると答えようがないのですが・・。 ロック権限の改造後、時々落ちるのは間違いないです。 以前一部おかしかった件ですがロック権限の改造前の時、録画予定のものと違う チャンネルの番組が録画されていたのでチャンネル設定が間違っているのかと EpgDataCap_Bon.exeのUDP-Viewを使ってサービスを切り替えていって試してみたところ そのチャンネルに問題ありませんでした。 続けて全チャンネルの確認をしていくとチャンネルが切り替わらないところが あり、ch2の設定を確認しましたが問題なく、EpgDataCap_Bon.exeを立ち上げなおして やってみると今度はうまくチャンネルが切り替わり、更に何度か続けていると 切り替わらないことが発生しました。 Win10後、BonDriver_Spliter~EDCBまで新しいビルドの物を使っているので どこのexe,dll,iniがおかしいのか特定できないのと、こちらも再現性が 100%ではなくたま~になので、前レスで書きませんでしたが一応ご報告を。 続きへ



299:名無しさん@編集中
15/09/12 16:42:14.04 jRNX7Trl.net
続き
作者さんへですが、
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));
だけ残して後は消してコンパイルしてます。
できればこの辺りご再考をよろしくお願いします。

300:名無しさん@編集中
15/09/12 17:02:56.84 t1lAERej.net
273で書き忘れました。
後述の以前一部おかしかった件ですが、ロック権限の改造後は
この現象は見ていません。

301:名無しさん@編集中
15/09/12 20:08:13.07 dFPYR6xi.net
>>255
本家developブランチの最新ソースに対するパッチなので、本家には組み込まれてないですよ
CSの場合だけTSストリームから視聴中のサービスIDが消えた時に映像/音声を止めるのは、
フジテレビnextは契約してるけどフジテレビoneは契約していないような場合にPAT先頭サービスを選んだら、
未契約の映像/音声を再生しようとする事になるので、恐らくそうならないように想定しての仕様なのかなと思います
もっとも、現在のTVTest本体はCAS機能を持っておらず、その辺りは気にする必要は無くなってる筈なので、
リクエストしたら取り込まれる可能性もあるかもしれませんね

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

303:名無しさん@編集中
15/09/12 20:25:08.93 dFPYR6xi.net
>>273-275
報告ありがとうございます
>>277にも書いた通りの感じなので、少しやっかいかもしれません(;´Д`)
手元で再現できないのがツライ…
もし可能であればデバッグビルドしてサービスでない方でデバッグ実行してみて、


304:落ちた場所を 調べていただけるのが一番なのですが、とりあえず当方の配布バイナリで実行してみて、 落ちた時の「障害オフセット」を教えてもらえるとそれだけでも助かります #自己ビルドではなく当方からの配布バイナリでないと、こちらに当該バイナリが無いので #「障害オフセット」は参考にできません… inet_ntoa()の件は、XPにはinet_ntop()が無いので、コンパイルはできても実行できなくなるんです(;´Д`) 当方の配布バイナリはVS2015でビルドしているのですが、ツールセットはv140_xpにしてます #これならエラーにはなりません v140でビルドすると確かにエラーになりますね その場合は既に試されてるように、64bit側と同じ方を使うようにすれば大丈夫ですよ



305:名無しさん@編集中
15/09/12 20:36:58.24 KWvmWs16.net
BonDriverProxyの作者さんはトリップ付けてもらえませんか?
後で過去ログ参照する時とか一目で判別できるので
よろしくお願いします

306:名無しさん@編集中
15/09/12 21:57:13.19 t1lAERej.net
273-275 です。
すみません、GitHubのソースの場所ならわかるのですが配布バイナリはどこでしょうか?

307:名無しさん@編集中
15/09/12 22:15:22.15 i385/JP8.net
>>280
>>3に書いてあるよ

308:名無しさん@編集中
15/09/13 00:32:41.43 RyBKPFF7.net
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

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

310: ◆SALrG1ld3mTc
15/09/13 11:55:38.07 /ZxTJa6Q.net
>>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を破棄してしまう状態が発生するのを無くせたはずです
とりあえずこれで様子見てもらえるでしょうかヽ(;´ー`)ノ

311:名無しさん@編集中
15/09/13 12:12:42.18 /0SFmSyX.net
結構流通してると思われるのにPLEX系のボンドラはソースも公開されてないしダメダメですな

312:名無しさん@編集中
15/09/14 22:32:49.33 tIlzQPGU.net
273-275 です。
SALrG1ld3mTcさん、変更ご苦労様でーす!
現状落ちる気配まったくありません。夕べと今日、
かなりガチャガチャとチャンネルを変えてみたのですが平気なようです。
が・・・・
EDCBで違うチャンネルが録画される病が再発してしまいましたw。
落ちないのを確認終了後、普


313:通に予約録画を入れ録画しているときに、 録画の様子を少し見ようと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回りいろいろいじっていっているので、我が家の固有の異常である可能性もあるので、 このまま使用を続け、この異常の件何かわかったらまた報告いれます。



314:名無しさん@編集中
15/09/14 23:08:16.25 4n9Y6JJu.net
>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();
あたりが、妥当な実装かと思うのですが、いかがでしょうか。
ご助言を頂けましたら幸いです。

315:名無しさん@編集中
15/09/15 01:07:52.82 PR/PgOiy.net
うちのBonDriver_PXがHDUSのsrcを改造したらしいけど、
HDUSのプログラムがOpenTunerでCoUninitialize呼んで
CloseTunerでCoUnInitialize呼んで、
>>287みたいになってますねぇ。
HDUSのソースにうちのチューナー名、キャプチャー名入れて、
少々変更して動かしてみると、フィルターグラフの構築は
BonDriver_PXと同じにできてるのに、フィルターグラフに
runかからない~♪
BonDriver_BDA改のソースも同じようにうちのチューナー名、キャプチャー
捕まえるようにしてみたけどフィルターグラフに
runかからない~♪
graphstudionextでMicrosoft DVBT Network Provider~レンダラまで
繋がるやつで繋いでみたけど
runさえかからない~♪
ネットワークプロバイダ登録直後のチューニング要求に何か設定いるのかなぁ。
ここで行き詰ってるぅぅ。
誰か動かし方わかる人いたら、この初心者に優しくおしえて!

316:名無しさん@編集中
15/09/15 04:18:00.88 b63Dshpf.net
うっざ

317: ◆SALrG1ld3mTc
15/09/15 06:26:33.57 Vobrm9Ay.net
>>286
ひとまず落ちないようにはなったとの事で良かったです
実は>>284の下の方で書いた変更の為、BDPEXも今の物に入れ替えると、当方が落ちる原因になっているのではないかと
推測している状況に殆ど遭遇しないようになっているはずなので、もし可能であればBDPEXは前のバージョンに戻して、
BonDriver_Splitterのみを今の物で試してみてもらえないでしょうか?
それでも落ちないようになっていて初めて、>>284の推測は当たりだったのかなと思えるのでヽ(;´ー`)ノ
別チャンネルになってしまう件は、ちと謎ですね(;´Д`)
その辺の変更は今回何も行っていないはずなのですが…
何だか、チャンネルロックされているチューナに対してチャンネル変更を試みた場合の挙動のようにも思えます
この場合アプリにはチャンネル変更成功に見えるようにしているので、もしそうなった場合、EDCBは録画対象
チャンネルに変更成功したつもりで、別チャンネルを録画してしまうと言うのが起こりそうではあります
例えば、EDCBの設定に対して実チューナ数が不足していたりするとそうなるかもしれませんね
ともあれ、BDPEXとBonDriver_Splitterをデバッグビルドしてみて、Dbgview辺りでログを眺めてみると
何かヒントがあるかもしれません…

318: ◆SALrG1ld3mTc
15/09/15 06:41:48.30 Vobrm9Ay.net
>>287
> あたりが、妥当な実装かと思うのですが、いかがでしょうか。
COMの初期化/終了処理はスレッド単位で行う必要があるものなので、単一のグローバル変数でフラグを持つのは
あんまり良くないのではないかとヽ(;´ー`)ノ
例えば、
URLリンク(www1.axfc.net)
等は、恐らくその点を考慮してスレッドIDを確認するようにしているのだと推測しますが、いずれにせよ、
OpenTuner()/CloseTuner()が別スレッドで行われる場合の解決にはなっていませんね
また、OpenTuner()/CloseTuner()だけでなく、SetChannel()やGetSignalLevel()等の他のAPIも、
OpenTuner()と呼び出し元スレッドが同一だとは限りません
#事実、例えばTVTestでは異なっています
その様な感じなので、個人的にはEDCB側にCOMの初期化/終了処理を追加する方が正解なんじゃないかな、と思います
やはりスレッドの最初と最後でやるのが確実なので、スレッドをつくった人が行うのがベストではないでしょうか…

319: ◆SALrG1ld3mTc
15/09/15 07:06:22.10 Vobrm9Ay.net
>>288
PLEXのチューナは何やら初期化処理がいるようなので、それをやってないからじゃないでしょうか?
linuxのドライバを使用するには、
URLリンク(github.com)
な感じの処理が必要(らしい)ですが、これとほぼ同じ処理がBonDriver_PX_W3PE_S0.dllの中にも、
OpenTuner()でフィルタグラフをつくってる辺りにあるようですね

320:名無しさん@編集中
15/09/15 14:02:47.23 1p/tEp51.net
クライアントIP、使用チューナーなども含めて、
チャンネル変更や変更失敗のログとか取れるとわかりやすそうですねえ

321:名無しさん@編集中
15/09/15 16:35:44.95 1p/tEp51.net
>>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フジに
なるのが良いと思うのですが、どうでしょう。
お忙しい中、面倒だとは思いますがよろしくお願いいたします・・・。

322: ◆SALrG1ld3mTc
15/09/15 23:38:13.64 Vobrm9Ay.net
>>293-294
> なるのが良いと思うのですが、どうでしょう。
ありがとうございます、確かにその挙動の方が良いですね
もともと優先権有りと無しの二択のみで、かつ有りのクライアントがチャンネル変更出来ない状態と言うのは
考えなくてよかったところから、ご指摘のような挙動になってましたヽ(;´ー`)ノ
対応してみたので確認してみて下さい
ログに関しては以前もリクエストいただいたのですが、あんまり優先度は高くないかなーと思って
後回しにしてしまっております(;´Д`)

323:名無しさん@編集中
15/09/16 01:15:59.10 NtH+9SSP.net
>>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の仕組みでチューナー設定を行っていると推測しているのですが、
その処理の方法について情報が全く掴めないため、今後この直接ドライバを叩く方法で初期化処理を探ってみます。
スレ違いな件でしたが、情報大変ありがとうございました。

324:名無しさん@編集中
15/09/16 03:12:19.96 kPve2Fte.net
意味不明の自家発電書き込みにワロタw

325:名無しさん@編集中
15/09/16 07:23:50.90 sYR8CujZ.net
>>295
確認してみました。
意図した動作になっていると思います。
ありがとうございました。

326:名無しさん@編集中
15/09/16 07:30:55.97 d1QHFDlx.net
>>296
大変参考になります。
何か進展があれば是非おしえてください。他のPlex製品にも応用できると思いますので。

327:名無しさん@編集中
15/09/16 07:55:18.64 d1QHFDlx.net
>>291
詳細な説明ありがとうございます。
当面はスレッドIDをする暫定的な対応しかないですね。
ところで、リンクのソースだとS_FALSEの時の処理が抜けてますね…

328:名無しさん@編集中
15/09/16 09:19:05.96 BfRuKofg.net
>>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処理を行うのが最善ではないかな


329:と思っています。 近いうちにリンク先にあったBonDriverでそれをやってみたいと思います。



330:300
15/09/16 16:35:23.46 d1QHFDlx.net
>>301
そう思いがちなのですが違うのです。
URLリンク(msdn.microsoft.com)(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が必要になります。
なので、実装�


331:ニして正しいのはS_FALSEの場合はすぐに CoUnInitializeしてやることだと思ってます。 もちろん呼び出しによらず別スレッドで完結できればそれに越したことはないと思います。



332:300
15/09/16 18:08:43.78 JWzbiEwR.net
>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で問題ないと思っています。
何か見当違いをしているかもしれませんが、その際はご指摘いただけたらありがたいです。

333:名無しさん@編集中
15/09/16 18:11:52.70 JWzbiEwR.net
もっともCOINIT_MULTITHREADEDにしたい理由は
「若干のパフォーマンスアップがある、かも」くらいなので、
予期せぬ破綻が起きないために、とりあえずCOINIT_APARTMENTTHREADEDにする、
というのもアリだと思います。

334: ◆SALrG1ld3mTc
15/09/16 20:06:22.11 53Si47U2.net
>>296
BonDriver_PX_W3PE_S0.dllがBonDriver_HDUSの改造でつくられていると言うのは多分その通りで、
URLリンク(www2.wazoku.net)
のソースで言うと、DShowMain.cppの748行目に相当する部分で例の初期化処理を呼んでるようですね
C++なので仮想関数呼び出しになってて、ioctl()に相当するコードが具体的にどうなっているのか
テキトーにバイナリを眺めてるだけでは特定がめんどくさいのですが、PX-W3PEの実機を持ってる方なら
BonDriver_PX_W3PE_S0.dllをロード -> CreateBonDriver() -> OpenTuner()とやって、OpenTuner()の
内部をデバッガで追って行けば、結構簡単に特定できるんじゃないかなと思います
dllのロードアドレス+1040c辺りからが問題の処理なので、ここにブレークポイント置いて
動かしてみるのが手っ取り早いかと…

335: ◆SALrG1ld3mTc
15/09/16 20:11:58.58 53Si47U2.net
>>301
> S_FALSE
>>302さんの書かれてる通りですが、MSのAPIにはたまーにこの手の罠がありますね…
> 私は、BonDriver側の責任でCoInitializeを行うべきだと思っています。
> BonDriverでCOMを使用するかどうかはBonDriver側の都合なので。
まあ行うにせよ行わないにせよ、ライブラリの使用方法に制限をかける形になるのは同じで、
単にライブラリが、
---
a. 使用するには呼び出し側での初期化が必要ですが、それを守る限りは自由なAPI呼び出しが可能です
b. 対になるAPIを異なるスレッドから呼び出す事はサポートしませんが、特に前準備無しでも使用可能です
---
のどちらの立場をとるのかと言う話なので、ライブラリ作者の好みの問題ではありますね
#個人的にはa.の方が好きですがヽ(;´ー`)ノ
ただ、そのライブラリのドキュメントやソースが無い場合には、a.のパターンでは最初から動かず、b.のパターンでは
アプリのつくりによって動いたり動かなかったり、と言う感じになるので、どちらがマシかと言う話になります
この場合は、ライブラリユーザ(アプリ作者)としてはa.の形であった方が助かるんじゃないかなーと思ってます…

336: ◆SALrG1ld3mTc
15/09/16 20:15:17.65 53Si47U2.net
> 今考えているところで一番良いやり方は、BonDriver側でAppとは独立した別スレッドを作成し、
> そのスレッドでCoInitialize/CoUnInitializeを含めたすべてのCOM処理を行うのが最善ではないかなと思っています。
ですね、非常に有効だと思いますヽ(´ー`)ノ
若干トリッキーではありますが、外部に公開しているAPIの内COMが絡むものは、呼び出されたらイベントをトリガして
実際の処理はそれを受けたワーカースレッドでやり、処理が終わればそれをイベントのトリガ元に通知すると言う形に
すれば


337:、ライブラリ内でCOMの初期化/終了処理を完結できるので、APIの呼び出し方に制限はかからずアプリ側での 初期化/終了処理も不要にできますね #ちなみに、今のBonDriver_Proxyも(COMを使う目的ではありませんが)似たような実装になっています



338:名無しさん@編集中
15/09/17 01:38:04.41 UxTbU+TO.net
>>303-304
COINIT_MULTITHREADEDにするって事はCOM呼びだしのスレッド同期処理は全部自前でやるって事だけど
>>301で書いてるみたいに自前でスレッド起こして無い以上、どっちみちスレッド同期処理とか不可能だよね。
GetTsStream()やPurgeTsStream()がCriticalSectionでガードされてた所で
COMを呼び出すスレッドが同一スレッドである保証なんてどこにもないよ。
ガードされてても別スレッドからの呼出なら、どこかでCoInitialize()しなきゃいけない。
どっちみち>>301の方法以外では別スレッドからの呼びだしなんて解消出来ない。
COMのスレッド周りに関する話は
URLリンク(www.kekyo.net)
URLリンク(www.kekyo.net)
この辺が参考になるよ
COMのアパートメント(1)~(6)は全部読んだ方がいい。

339:301
15/09/17 10:01:23.53 HpsXGkNf.net
>>302
うわ、完全に勘違いしてました。
確かにそう書いてありますね。
S_FALSEの場合はすぐに CoUnInitializeしてやるのが正解なんですね。
ちなみにRPC_E_CHANGED_MODEが返ってきた場合はどう対処するのが正解なんでしょうか?
(例のソースではこれが返ってきたときのことは想定していません)
COINIT_MULTITHREADEDについては、難しすぎてよく理解できてないんですが、
>>308のとおりBonDriverという立場では使用できないと思ってます。

340:名無しさん@編集中
15/09/18 00:33:12.57 9PcEUns2.net
>>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のドライバと違う、
②別プロセスからドライバに読書されたか、③Windows上の他のシステム関数から読書されたことになりそうだ。

341:名無しさん@編集中
15/09/18 00:34:44.21 9PcEUns2.net
310 続き
DeviceIoControl以外にデバイスドライバの読書をする関数を知らないので、③のWindows上の他のシステム関数からだと厄介だ...。
①のDeviceIoControlの引数が違う点については、別の側面から疑っている


342:。それは >>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のデータテーブルが暗号解読に必要なキーではないかと合点がいく。あくまで推測なので定かではない。



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

344:300
15/09/18 17:29:01.95 molxTCMc.net
ただ、それだと乱暴なのでもう少し考えてみると、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なので、できたらこちらの作者のお話もお聞きしてみたいです。

345:名無しさん@編集中
15/09/18 19:44:58.02 bi0g4EkT.net
呼び出し元のスレッドをアパートメントが設定されてるスレッドに固定できるかどうか、って話なのでは?
呼ばれる側からは内部でCOM専用スレッドとか作らない限り固定出来ないでしょ。
COINIT_APARTMENTTHREADEDにしてるってのは呼び出し元は単一スレッドであることを前提に
メインスレッドから呼んでも大丈夫なようにしてるだけなのでは。
現状でCOM呼び出しがパフォーマンスのネックになってるかどうかも不明なのに
汎用のDLLをわざわざ危険側に倒す思想がよくわからない。

346:名無しさん@編集中
15/09/19 13:14:21.14 fMUe+7h+.net
>>292 でおしえて頂いた初期化処理についてですが、どうやらIKsPropertySet インターフェイスを
使っているようです。
>>311で考えた”DirectShowのCOMサーバーの実体プロセス”とやり取りをすると考えたのですが、
これは誤りで同一プロセス内のKsproxy.axフィルタ�


347:ハしてやり取りが行われるようです。 以下その解析記録です。 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は表示されることがなかったとなる。



348:名無しさん@編集中
15/09/19 13:16:03.33 fMUe+7h+.net
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.........
これらのコマンドとデータを送り込めればチューナーが何か反応するのかも。

349:名無しさん@編集中
15/09/19 13:17:09.02 fMUe+7h+.net
316 続き
これらの解析からIKsPropertySetを使って何等かの初期設定を行ってチューナーに起動をかけていると考えていこう。
上記のMSDNに「アプリケーション ベンダーは、IKsPropertySet インターフェイスのメソッドを使って、
ドライバやフィルタが特定のプロパティ セットをサポートしているかどうかを調べ、それらの
プロパティを取得または設定できる。」とある。
PLEXの提供するCLSIDが必要らしい。
そんな資料ない...。先は随分長そうだ。

350: ◆SALrG1ld3mTc
15/09/19 19:19:11.78 92YkKb/m.net
>>313
BonDriverProxyの場合は単純に、読み込んだBonDriverがCOMを使っていた場合に、STA/MTAのどっちを想定しているのか
わからないので、安全側に倒すと言う意味でSTAにしています
また、現代のPCの性能ではMTAを使って目に見えてパフォーマンスを上げられるとすれば、まず使用するCOMオブジェクトの
ThreadingModelがFreeかBothであり、かつそのCOMオブジェクトのメソッドをフルスピードで回るループの中から
呼び出している�


351:謔、なパターンくらいじゃないでしょうか? BonDriverのAPIのような、昨今のCPUの速度を基準にみるとごく低頻度で呼び出されるだけと言える用途では、 それによる性能改善はほぼ無さそうな気がしますヽ(;´ー`)ノ



352: ◆SALrG1ld3mTc
15/09/19 19:23:49.63 92YkKb/m.net
そう言えば、COMを使うBonDriverの実装の形として、大体は取得したCOMオブジェクトのインタフェースをメンバ変数に
保持していて、API内部ではそのメンバ変数経由でCOMオブジェクトのメソッドを呼んでいます
この場合、例えばAPI1とAPI2で上記メンバ変数を使用していたとして、アプリがそれらを別スレッドから呼び出した場合、
特に目的のCOMオブジェクトのThreadingModelがSTAに属するものであった場合は、本来のCOMの仕組みから外れた
危ない使い方をしている事になってしまいます
ですが、正しい使い方(律儀に元のインタフェースをマーシャリング/アンマーシャリングして、別スレッドからの
呼び出しであった場合には取得したプロキシ経由でメソッドを呼び出す)をした場合に本来発生する筈の、
WindowメッセージによるCOMのマーシャリングをバイパスして直接メソッド呼び出しになるので、その分の
オーバヘッドは発生しなくなっています
つまり、本来重い(かもしれない)はずのアパートメントをまたいだCOMオブジェクトのメソッド呼び出しですが、
少なくともソースが存在しているBonDriverでの実情としては、上記の通りほぼ単なるメソッド呼び出しとなっているので、
そう言う意味でもSTA/MTAの違いは恐らく有って無いような物ではないでしょうか
またこのようなつくりになっている関係上、その手のBonDriverを利用する際には、OpenTuner()/CloseTuner()/
SetChannel()/GetSignalLevel()辺りの呼び出しはそれぞれ排他にしておいた方が無難なのでしょう
本来はxtne6fさんが行われたこの↓使い方が一番安全なんでしょうけどもヽ(;´ー`)ノ
スレリンク(avi板:792番)n

353: ◆SALrG1ld3mTc
15/09/19 19:38:24.01 92YkKb/m.net
>>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()してみる感じでどうでしょう?

354:名無しさん@編集中
15/09/19 23:12:57.82 W5x7rP0N.net
>>318,319
詳細な解説ありがとうございます。
パフォーマンスの実情を踏まえて安全側にふるのはまさにその通りだと思います。
仰る通り、xtne6f氏がEDCBを改良してくれたのでBondriverのCOM問題は実質解決ですね。

355:名無しさん@編集中
15/09/20 14:13:51.94 klFkVMgH.net
>>319
解析おつかれさまです。
詳細な報告、非常に参考になります。

356:名無しさん@編集中
15/09/21 20:06:23.79 GRggE4EQ.net
>>320
GIUDとコマンドの件ありがとうございます。
dllからそれを引き出すとは、BonDriverProxyの作者さん、スゴイ解析力ですね!。
とても関心します。
この様に初期化部分を作って   URLリンク(www1.axfc.net)
動かしてみてます。
結果ですが、確かに[0x0c 読出] [0x0d 読出] [0x14 書込] コマンドとして
全てS_OKで返って来るところまで来たのですが、今の所グラフの動作には至っておりません。
pIKsPropertySetの引数についていまいち理解できないので、おおよその検討で引数を入れています。

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

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

358:名無しさん@編集中
15/09/23 01:01:15.12 FbNy3djd.net
>>324 結果から言いますと、
ついにフィルタグラフにrunが掛かりました。
チューナーに対する初期設定がうまくいったようです。
現状の改変ソースを参考資料としてアップしてみます。
URLリンク(www1.axfc.net)
一部constがビルドで引っ掛かるとこがありましたので、
constを抜いて、仮にg_M2_Dec = 0を入れて起動させています。
BonDriverProxyの作者さん。モノスゴイ解析力ですねぇ。
コマンドの解釈や、GetKey2の処理をよく新たに見つけ出したものだと驚きます。
一点質問なのですが、M2_DECオプションを有効にした場合
ハード上もしくはドライバ上でデスクランブルすると解釈して
いいのでしょうか?

359: ◆SALrG1ld3mTc
15/09/24 07:28:51.80 gsOg05yg.net
>>325
> 一点質問なのですが、M2_DECオプションを有効にした場合
> ハード上もしくはドライバ上でデスクランブルすると解釈して
> いいのでしょうか?
全然調べていませんが、恐らくドライバで行われるんだと思います
linux版のドライバにはまるもさん作の「ARIB STD-B25 仕様確認テストプログラム」が
ほぼそのまま組み込まれているようなので、多分windows版でも同じなんでしょう
#もちろん、内蔵カードリーダにカードを刺しておく事が前提でしょう

360: ◆SALrG1ld3mTc
15/09/24 07:33:48.18 gsOg05yg.net
あともうちょっと調べたら、>>320で書いた
> 一応、このIKsPropertySetは他のdwPropIDでSetChannel()やらGetTsStream()の中からも使われているようですが、
はやっぱり使われてるみたいですね
特にGetTsStream()から呼ばれる方はコンテンツの復号(MULTI2ではなく独自のスクランブルの)を行うために必須のようです
適当にですがコードに起こしてみました
URLリンク(pastebin.com)
SetChannel()の方では、m_pcDShow->SetChFreq( iFreq );の後に、
---
m_pcDShow->SetChannel(BSならtrue CSならfalse, TSID, SID);
---
と言う感じで呼びます
TSIDはそのTSストリームのTSID、SIDは(恐らく)そのTSストリームのサービスの適当なSIDか0で、
これらは(SetChFreq()に渡す周波数とともに)iniファイルから読み出して設定します
なお、この処理はS側のみで


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



362:名無しさん@編集中
15/09/24 19:44:37.76 YSiFFSy0.net
なにこの難解なスレw

363:名無しさん@編集中
15/09/24 23:27:54.23 cIFUPuu/.net
>>327 結果からですが。
動きましたーー!。
まだ地上波のみですがTvTestで表示できましたー!
衛星側はまだ作りこまないと何もできませんが、とりあえず地上波側の表示はできました。
>>327 の新しいコードと入れ替えて動かしてみるとTSデータの取得が始まって最初の数秒はパケット数が少ないのですが、
途中からパケットが多くなってそこでエラー停止していたので一時バッファだと思われるバッファをを倍にしてみたところ
動作するようになりました。
このバッファを倍にして他に影響ないのかよく理解していないのですが、とりあえずこれで動きます。
この停止が起きた時に100%ではないのですが、デバイスドライバが離脱することがあることがわかりました。
その辺りの耐久性がないようです。ネットで時々書き込みを見るPLEXチューナーを見失う現象は、
このことではないかと考えています。
このバッファオーバーによるものと思われる対処としては、バッファが溜まり過ぎた時の処理を見直すか、
バッファを増やしてにして他に悪影響ないようであればiniでバッファ量を指定できるようにしようと考えています。
今後はゆっくりですが先に衛星側の作りこみ、チューナーとキャプチャ(現在固定)の選択の仕方変更、
iniでバッファ量を指定、その後TSバッファがらみでメモリコピーを多用しているところがあり、ポインタ処理に
置き換えれば若干パフォーマンスアップを狙えそうな所があるので、その辺りに手を付けるつもりです。
開発資料として現状のソース公開しておきます。
URLリンク(www1.axfc.net)
BonDriverProxyの作者さん、またまた大感謝です。
これだけのコードを解析から引っ張りだしてくるとは・・・・
今では、何かの実を食べた「能力者」なのではないかと思っていますyo。

364: ◆SALrG1ld3mTc
15/09/25 07:28:16.61 rOivCOgP.net
>>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()呼び出すたびに毎回つくらなくても良くなりますね
とりあえずそんな感じですよ

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

366:名無しさん@編集中
15/09/25 08:17:51.05 OyXy4mfw.net
まあPLEX系でソースありになればうれしい

367:名無しさん@編集中
15/09/25 08:28:42.66 AbX8MWdv.net
PLEXのbondriver専用スレ立ててやるのがいいかもね
ベースが同じだから旧製品からこれから発売される新製品まで全対応出来るし

368:名無しさん@編集中
15/09/25 09:58:37.86 d0hb4BNi.net
世の中すごい人達がいるもんだ
Proxy系にはいつもお世話になってます。あざーっす

369:名無しさん@編集中
15/09/25 14:49:59.66 Az6h2rPs.net
>>331
参考になって楽しいですよ。

370:名無しさん@編集中
15/09/25 17:21:27.62 O0Vq2wbo.net
難解発言した人も悪気は無いと思うよ
俺は何も理解できなけれど、何かが発展して言ってるというのは、飛ばし読みしてても面白い
嫌いなのは出し惜しみだから

371:名無しさん@編集中
15/09/25 18:02:27.13 L2vPzgGJ.net
>>333
ASICENじゃないのはまた別に解析が必要そう(GUIDも違う)

372:名無しさん@編集中
15/09/25 19:09:07.25 eCL+WuMi.net
【PLEX】PX-S1UD/BCUD Part4 【ドングル】©2ch.net
スレリンク(avi板)
こっちのBCUDの方も頼むわ
必要ならBCUD送るよ

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

374:339
15/09/26 00:53:58.53 ULbc/8bD.net
考え直してsplitter有りで統一して運用方法を工夫することにしました
1つのチューナーを別のBondriverでって無茶な使い方ですよね。スレ汚しすみませんでした

375:名無しさん@編集中
15/09/26 11:12:22.35 GuD/O58I.net
新ドライバーでPT2のバグ直ったのかな?

376:名無しさん@編集中
15/09/26 18:45:35.57 kGGMlB+o.net
バグとは?

377:名無しさん@編集中
15/09/26 19:20:36.45 SBq10ySz.net
買ったら新しいPCを生やしてしまうバグ

378:名無しさん@編集中
15/09/26 23:24:33.74 Vrno3hSp.net
>>342
32bit Windowsでメモリが4GB以上だと0Mbps病が発症する問題かな?

379:名無しさん@編集中
15/09/27 00:00:03.52 Z/H6YHq8.net
バグっちゃバグなんだろうけど、どうせ物理アドレス考えれば原理的に使えないんだろうし・・

380:名無しさん@編集中
15/09/27 18:54:00.64 w2qquhAH.net
>>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内部で管理変数の上書き破壊等が発生する事になります
URLリンク(github.com)
#で書いてるのはその様な場合の話です
その状態


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



382: ◆SALrG1ld3mTc
15/09/27 18:56:17.02 w2qquhAH.net
ズレた(;´Д`)>>346は当方です

383: ◆SALrG1ld3mTc
15/09/27 19:04:05.28 w2qquhAH.net
>>338
少し見てみましたが、BonDriverで復号的な事はやっておらず、変わった事やってるのは
SetChannel()とGetSignalLevel()の中くらいにみえますね
その変わった事の内容は
URLリンク(pastebin.com)
な感じです
URLリンク(www1.axfc.net)
のBonDriver_BDASのソースなら、
CBonTuner::LockChannel()の中の
---
pIRequest->put_Locator(pILocator);
---
の後で、
---
CustomSetChannnel((WORD)lTSID);
---
みたいに呼んで使います
CustomGetSignalLevel()の方は、CBonTuner::GetSignalLevel()の頭で呼んで、多分RSSIが2バイト値で
返って来るので、これで得た値を元にfloatのCNRとして計算したのを返してるようです
こちらはBonDriver_BDASが行ってるように、BDA標準の方法でとれるなら使う必要は無いかもしれませんね
どっちにしろ、インタフェースの型が良くわからなかったので関数ポインタ経由で無理やり呼び出しており、
まともに機能するかどうかはわかりませんが(;´Д`)

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

385:338
15/09/27 23:17:28.55 TgOHQ+jD.net
>>348
レスありがとうございます
BDASに上げてもらったコード組み込んで試してみます

386:名無しさん@編集中
15/09/28 00:02:56.68 P8iLFU2e.net
>>348
教えてもらったコードでTSID指定でBSのチャンネル取れるようになりました
それと動作させるのになんらかの初期化コードが要るようなんですが、わからないですかね?
バイナリで公開されているBondriverでスイッチを入れてからでないと動かないんです

387:名無しさん@編集中
15/09/28 00:50:07.72 R5uGdt/w.net
>>351
>>288このあたり以降が関係していないかな?

388:名無しさん@編集中
15/09/28 02:24:33.40 P8iLFU2e.net
BonDriver_BDAS Ver.0.03
URLリンク(www1.axfc.net)
[更新履歴]
Ver. 0.03
・カスタムコード追加によりTSID指定でBSのチャンネルが取れるようになった

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

389: ◆SALrG1ld3mTc
15/09/28 20:51:07.19 cGa3TeDv.net
>>350-353
うーん、とりあえずOpenTuner()終わりまでにはW3PEやW3U3でやってるような特殊な処理は
入ってないように見えますね
基本的に普通のBDA系BonDriverと同じで、BonDriver_BDASで言うところの
CBonTuner::LoadAndConnectTunerDevice()内の、
---
string::size_type n = 0;
wstring sem


390:Name = 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"で固定ですね



391: ◆SALrG1ld3mTc
15/09/28 20:53:12.62 cGa3TeDv.net
BonDriver_BSCSをどのタイミングまで使えばBonDriver_BDASが使えるようになるのかわかるでしょうか?
DLLをロードするだけ、CreateBonDriver()まで、OpenTuner()まで、最初のSetChannel()まで、と少しづつ
機能を使っていって、どの段階でBonDriver_BDASが使えるようになるのかがわかれば、どこに鍵になる処理が
あるのかのヒントになりそうです
…CustomSetChannnel()のChannelをtypoしてるのにさっき気付きました(;´Д`)失礼しました

392:名無しさん@編集中
15/09/28 22:07:14.15 P8iLFU2e.net
>>355
わかりました
特殊なチューナー初期化コードは必要ないということなんですね
>BonDriver_BSCSをどのタイミングまで使えばBonDriver_BDASが使えるようになるのかわかるでしょうか?
>DLLをロードするだけ、CreateBonDriver()まで、OpenTuner()まで、最初のSetChannel()まで、と少しづつ
うーん…それはVSのデバッガ使って追わないといけないんですよね
今度時間あるときにやってみますね

393:名無しさん@編集中
15/09/28 22:10:26.52 P8iLFU2e.net
>>355
必要ならBCUD送ってもいいですけどね

394:名無しさん@編集中
15/09/28 23:43:04.50 P8iLFU2e.net
BonDriver_BDAS Ver.0.04
URLリンク(www1.axfc.net)
Ver. 0.04
・BonDriver_BDAT Ver.1.05 までの更新内容をだいたい取り込んでおいた
・あとはチューナーのスイッチが入るようになれば完成

395:名無しさん@編集中
15/09/29 01:14:08.78 1EOqt+1D.net
>>355,356
356さんとは別人ですけど。
OpenTunerを超えれば使えるようになる様です。

396: ◆SALrG1ld3mTc
15/09/29 19:37:36.41 D0eEl3nI.net
>>359
おお、ありがとうございます
一応ですが、CreateBonDriver()までやっただけでは使えないと言う事ですよね?
OpenTuner()の処理は一通り追ってみたつもりだったんですが、もう少し眺めてみます…
>>357
まあどうしても気になったら自分で買ってきますw

397:名無しさん@編集中
15/09/29 20:16:30.10 1EOqt+1D.net
>>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

398:名無しさん@編集中
15/09/29 20:24:58.19 1EOqt+1D.net
×BonDriver_BSAS.dll
○BonDriver_BDAS.dll (Ver.0.04) です。

399: ◆SALrG1ld3mTc
15/09/30 00:03:21.03 Vq8gxJyY.net
>>361-362
おかげでそれっぽい処理見つけられましたヽ(´ー`)ノ
とりあえずざっとコード化してみました
URLリンク(pastebin.com)
CBonTuner::LoadAndConnectCaptureDevice()の
---
return S_OK;
---
の直前で呼んでみて下さい…

400:名無しさん@編集中
15/09/30 13:27:46.89 75ir4n1u.net
>>363
そのコード自分が入れて試してみましたところ、まだ動かないですね
Channnelのtypoは直しときました

401:名無しさん@編集中
15/09/30 17:25:14.54 75ir4n1u.net
スカパー!用のBonDriver_BDAのInitializeHookと
同じようなことやってるみたいですねえ

402:名無しさん@編集中
15/09/30 17:29:36.85 75ir4n1u.net
-1、-2、-3、-4とかは
E_XXXなどのリターンコードなんでしょうね

403:名無しさん@編集中
15/09/30 17:46:19.36 75ir4n1u.net
いやリターンコードじゃないかもですね
よくもまあCOMを逆汗してCコードに書き直しできましたね

404:名無しさん@編集中
15/09/30 17:58:38.66 75ir4n1u.net
CheckAndSetTunerDependCode(displayName);←ここでInitializeHook()が実行される
//


405: connect 成功なので、このまま関数を終了する return S_OK; ホラ、スカパーBonDriver_BDAと同じですね



406: ◆SALrG1ld3mTc
15/09/30 18:37:12.96 Vq8gxJyY.net
>>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))
---
#意味があるかどうかよくわからなかったのでコメント化してましたが、必要なのかもしれないです

407:名無しさん@編集中
15/09/30 19:20:03.36 75ir4n1u.net
>>369
すごい!動きました!

408:名無しさん@編集中
15/09/30 19:36:29.67 vDo9Votk.net
GJ
BSCSが選択したTSIDが記憶されてるから
その領域の初期化とかしてんのかな

409:名無しさん@編集中
15/09/30 20:06:45.73 7g+Kag58.net
コメントありの状態だとエラー -4 で、コメントをはずせば動きました。
信号レベル表示が100.00dbから変化しないのですけど皆さんどうです?

410:名無しさん@編集中
15/09/30 20:08:09.58 75ir4n1u.net
なんかチャンネルをマップしたテーブルか構造体をセットするAPIがあった気がする

411:名無しさん@編集中
15/09/30 20:12:04.53 75ir4n1u.net
>>372
WORD rssi = CustomGetSignalLevel();
ってところのrssiから算出するらしいけど、計算法がわからなかったんで
まだやってないです

412:名無しさん@編集中
15/09/30 20:44:13.62 75ir4n1u.net
>>372
うちでも100.00dbから変化しないです

413:名無しさん@編集中
15/09/30 20:46:09.45 75ir4n1u.net
【PLEX】PX-S1UD/BCUD Part4 【ドングル】©2ch.net
スレリンク(avi板)
今後はこちらでやりましょう

414:名無しさん@編集中
15/09/30 22:53:56.90 5v+HmoLx.net
BCUDはlinux版のドライバ作ってほしいわ

415:radi_sh ◆w66DTUAjabhm
15/09/30 23:28:07.35 rEjCCeRa.net
横から飛び入り参加で申し訳ないです
PX-W3PE/S3U3系のBonDriverですが、GetSignalLevel()にもカスタム処理が入ってますね
↓みたいな感じで得た値を1/100しているみたいです
URLリンク(pastebin.ca)

416:名無しさん@編集中
15/10/01 00:34:46.86 36rLzu6a.net
Win8から対話型サービス ダイアログ検出のウインドウって標準で無効になってるのね
Win10でも、細工したらSpinelとかをサービス化してもセッション0に切り替えてウインドウ出るようになったよ、って報告しときます。

417:名無しさん@編集中
15/10/01 00:51:36.26 MZuoeh7L.net
>>369
時間のある時で良いので教えて下さい。
URLリンク(www1.axfc.net) にあるWORD CBonTuner::CustomGetSignalLevel() ですが
・BonDriver_BSCS.dll のオフセット 1590 からで良いですか?
・if (w > 0x0bb8) w = 0x0bb8; (0xbb8 = 3000) は不等号が逆だったりしないでしょうか?
if (w < 0x0bb8) w = 0x0bb8;

418: ◆SALrG1ld3mTc
15/10/01 09:17:21.48 FXKDgKxt.net
>>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の方はドライバからもらった値を小加工して返すだけなのであんまり面倒無いですねヽ(´ー`)ノ

419:名無しさん@編集中
15/10/01 19:43:14.90 MZuoeh7L.net
>>381
ありがとうございます。
CNRの計算式まで書いてもらえるとは思ってもいなかったです。
PX-BCUDのCNR計算方法はLinux DVB PT3ドライバと同じですね。
簡単な経緯は以下に。
スレリンク(avi板:56番)

420: ◆SALrG1ld3mTc
15/10/01 22:31:16.47 FXKDgKxt.net
>>381
大体完成したようで何よりですヽ(´ー`)ノ
> PX-BCUDのCNR計算方法はLinux DVB PT3ドライバと同じですね。
そうなんですよねー
コードに起こしてからコレなんか見た事あるなと思って、PT3の旧SDKのソース(WinDriverが
使われてるのでSDKが殆どドライバのソースです)見直してみたら同じコードだったので、
もっと早くに気づいてたら慣れない浮動小数点絡みのアセンブラシコシコ読まなくても
済んだのに、と思いましたヽ(;´ー`)ノ

421: ◆SALrG1ld3mTc
15/10/01 22:33:08.76 FXKDgKxt.net
>>381 ×
>>382
失礼しました…

422:名無しさん@編集中
15/10/02 12:22:42.58 3H8JtadY.net
なんだよおまえら難しい話ばっかりしやがってW3PEユーザーのおれが酒でも奢ってやんよ

423:名無しさん@編集中
15/10/02 13:41:23.95 r6wj63lv.net
W3PEのオプソ版Bondriverは完成したの?
なら買ってくるけど

424:名無しさん@編集中
15/10/02 13:46:35.42 zd63mJaJ.net
スレみてると導入すげー大変そう

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

426:388
15/10/02 23:29:56.41 /iOd8IkH.net
>>388
正直微妙というのはPlexのデバイスドライバののと。一応。

427:388
15/10/02 23:31:30.58 /iOd8IkH.net
>>389
>デバイスドライバののと。
デバイスドライバのこと。

428:名無しさん@編集中
15/10/04 18:58:25.55 O5+npm4O.net
PTのSDKが更新されたから
OPENTUNER_RETURN_DELAY=10
の問題が直ったかと期待したけど放置だった・・・
がっかり

429:名無しさん@編集中
15/10/04 19:35:58.04 YPXySW80.net
>>391
マジか!
たしか誰かがearthsoftに報告したよね。

430:名無しさん@編集中
15/10/04 23:18:22.21 O5+npm4O.net
具体的に、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;
}
}

431:名無しさん@編集中
15/10/05 17:38:38.17 JzcAbdKy.net
bondriverproxyは導入難しいの?
環境新しくするから入れてみようかと思ってたんだが

432:名無しさん@編集中
15/10/05 19:27:58.27 g9FKjFgP.net
当人のレベルによるから難しいのかどうか聞かれても困るよね。
やってみればすぐわかること。

433: ◆SALrG1ld3mTc
15/10/06 07:51:21.09 pOPt5JpK.net
>>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()の似た部分はさわ�


434:髟K要ありませんよ あと、良かったらこちら↓もどうぞ… http://peace.2ch.net/test/read.cgi/avi/1430828601/114-121n >>394 >>395さんもおっしゃってますが、ひとまず試してみてわからない点があれば 聞いていただければと思いますヽ(;´ー`)ノ



435:名無しさん@編集中
15/10/06 17:54:08.01 4DCMKwci.net
>>396
これってPT3でも同様の問題がありますでしょうか?

436:名無しさん@編集中
15/10/06 18:09:13.54 gedYKS5x.net
>>396
ありがとうございます。
やってみます。

437:名無しさん@編集中
15/10/06 18:09:40.22 gedYKS5x.net
>>397
ないと思います。

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

439:名無しさん@編集中
15/10/08 13:34:26.82 phdzIbYI.net
>>400
>>396のは正解のソース。修正が必要なのは別のソース。

440:名無しさん@編集中
15/10/10 00:35:54.70 ou3/liYg.net
出張なさっておられる

441:名無しさん@編集中
15/10/10 17:04:46.73 ay8m38a5f
遅ればせながら
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パッチを当てていないオリジナルでは正常です
これって、私だけ?
どなたか教えて

442:名無しさん@編集中
15/10/10 18:05:54.42 1xBt+dKs.net
操作ミスで連投失礼
遅ればせながら
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パッチを当てていないオリジナルでは正常です
これって、私だけ?
どなたか教えて

443:名無しさん@編集中
15/10/11 09:54:44.44 1amKenyMI
現在のBonDriverProxy(Ex)は1.1.6.3だと思いますが
1.1.5.5用パッチってそのまま当たるんでしたっけ?
それに1.1.5.5って >>96 だとしたら>> 98 のコメントにもありましたが
ソース足りなくありません?

自分は >>54 の1.1.5.3用を当てた後、
ローカルで更新してる1.1.6.3ですが
B25_DECODE=1 でも 0でも問題なく動作しています

444:名無しさん@編集中
15/10/11 13:08:32.13 fJOo/5Y1.net
403です
自己解決しました
Proxyのプロパティで文字セットを"設定なし"にしていたためでした
修正して解決です

445:名無しさん@編集中
15/10/12 17:41:07.90 XuthCV7Z.net
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
よろしくお願いします

446:名無しさん@編集中
15/10/12 19:54:12.91 Mg13pJIm.net
>>15>>54を揃えればいいんじゃないの?

447:名無しさん@編集中
15/10/12 20:22:54.91 XuthCV7Z.net
>>408
そこのソースには「bcas_crypt.c」と「decode_ecm.c」が含まれていなかったんですよ

448:名無しさん@編集中
15/10/12 20:47:31.29 Mg13pJIm.net
>>96のパッチを使わなければいいのでは?
うちは>>54を使ったけど。。。

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

450:名無しさん@編集中
15/10/13 07:44:24.27 FY5Uk1yp.net
>>409
「bcas_crypt.c」と「decode_ecm.c」は必要ないです
windscard.libのリンクは必要ですが

451:410
15/10/13 07:51:13.63 FY5Uk1yp.net
間違えた
winscard.lib ね

452:名無しさん@編集中
15/10/13 19:56:40.00 Qc9Z8p69.net
>>412
ありがとうございます
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
デバッグでビルドすると出ません。
デバッグでビルドすべきなのでしょうか?

453:410
15/10/14 04:12:44.10 B0wywBd5.net
>>414
winscard.libは最初からあなたのパソコンのどこかにインストールされてます
hoge2014~ってなに

454:405
15/10/14 20:10:55.70 xP5vXzMg.net
ありがとうございます
BDPXのバージョン間違いやら紆余曲折ありましたが、無事目的を達成できました。

455:名無しさん@編集中
15/10/30 17:41:27.30 Tw4F38xG.net
BonDriverProxyですが、サーバ、クライアント同じPCで使う時に
127.0.0.1と指定すると接続できません。Spinelは127.0.0.1で繋がります。
127.0.0.1で繋がるようにならないでしょうか。

456:名無しさん@編集中
15/10/30 17:45:17.56 C+StQ3ym.net
昨日からPTCtrl.exeがカーネルにアクセスしてBSoD(STOP: 0x1000008E)になるんだけど、
この解決方法ってある?
PTCtrl.exe ver. 0.1.3013.0

457:名無しさん@編集中
15/10/30 17:46:33.15 WFkLfkJq.net
>>417
繋がるよ。設定がミスっている。
ホスト・クライアント両方を
ADDRESS=127.0.0.1
にする。

458:名無しさん@編集中
15/10/30 18:01:56.43 3a4NyaJ8.net
B25パッチ、快調ではあるんだが、地元ケーブルテレビの独自放送局だけ復号できない。
TVTest側で復号すると普通に見られるから、B25decoderとlibarib25の処理の違いかな。
エラー数の増え方がゆっくりなので、全パケットの復号に失敗しているわけでもなさそう。

459:名無しさん@編集中
15/10/31 11:19:10.47 Hy7U6q1J.net
>>419
ありがとうございます。
たしかにホスト、クライアント両方127.0.0.1にすれば繋がりました。
でもそれだと、他のPCからはIPアドレス指定しても繋がらない。
理想としては、SpinelみたいにホストにはIPアドレス指定は不要
クライアントはホストと同じPCなら127.0.0.1、別PCならホストのIPアドレスを指定すれば繋がることです。

460:名無しさん@編集中
15/10/31 11:26:55.69 /dPXB+Yb.net
127.0.0.1に拘る理由あるの?

461:名無しさん@編集中
15/10/31 11:29:47.62 Hy7U6q1J.net
ホストPCを変えるときに設定を変える必要がないためです。

462:名無しさん@編集中
15/10/31 11:34:19.41 gvl636iE.net
>>421
ホスト側のIPアドレスが192.168.0.xxxだった場合、ホスト側を
ADDRESS=0.0.0.0
にしておけば、
ローカルマシンからのクライアント側では
ADDRESS=127.0.0.1
リモートマシンからのクライアント側では
ADDRESS=192.168.0.xxx
で繋がるようになるよ

463:名無しさん@編集中
15/10/31 12:00:34.93 CxHcwrKN.net
>>421
ホストを0.0.0.0にする
全てのポートで待ちうけするようになるよ。

464:名無しさん@編集中
15/10/31 12:14:12.23 yz1BrDRt.net
いいこと知った
横からサンクス
>>424,4


465:23



466:名無しさん@編集中
15/10/31 12:18:32.72 yz1BrDRt.net
思ったんだけどspinel同様鯖側に設定項目無くして内部的に0.0.0.0デフォにしておいた方がいいんじゃない?
boncasserverなんかもそうなってるし

467:名無しさん@編集中
15/10/31 12:19:36.58 g7I8rrai.net
最初からガバガバにするのか

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

469:名無しさん@編集中
15/10/31 20:22:09.10 jL0S9naP.net
>>427
普段よく目にするアプリは0.0.0.0がデフォルトのが多いと思うけど、
必要最低限のアドレスだけ待ち受けるってポリシーも、セキュリティ面考えれば理解できる話かと。
何も考えずに実装とか設定ファイル共通化してるだけかもしれないけど

470:名無しさん@編集中
15/10/31 20:32:13.33 kIWWy0CN.net
まあ前スレみろよって話だな
==
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
ナルホド…
正直需要としては相当ニッチな気はしますが、
対応自体は多分簡単なので、ちょっと試してみます
==

471: ◆SALrG1ld3mTc
15/11/01 17:02:47.79 ajq2rplf.net
>>427
確か以前にも書いたのですが、>>430さんが書いてる通り、デフォルト0.0.0.0にしてしまうと、そっちにまで
公開するつもりはなかったのに公開してしまっていたと言う場合が出てくる可能性があるので、安全側に倒して
アドレス指定必須にしています
意図しない公開を防ぐには、意図してそうしない限りそうならないようにしておくのが望ましいとの考えからです
>>431
実装方法考えた後コード書くのは良いけどテストめんどくせと思って放置しつつ、
その後IPv6対応とかしてたら忘れてました(;´Д`)
さっきやって更新しときました
今のバージョンならIPv4とIPv6の両方で待てるようになるので、複数インタフェースのマシンでなくても
意味あるかもしれませんね

472:名無しさん@編集中
15/11/01 21:02:58.23 GhR3WWOx.net
>>432
更新お疲れ様です。あとで試してみます。
うちはNIC 3枚刺しとかしてるし、
外向けと内向けのNICが違ったりするので役に立ちます。
ありがとうございました。

473:名無しさん@編集中
15/11/02 03:08:54.06 kPB2HB94.net
r2って
d555d2bを適用したものなのかな

474: ◆SALrG1ld3mTc
15/11/02 08:22:49.89 EDr4GnDf.net
>>433
世の中どんな需要があるかわからないものですね…
お役に立つのなら幸いです
>>434
その通りです
変更内容はコミットログに書いてる通りで、ADDRESSに設定された文字列のパース処理で手�


475:イきしてたのを 気になって考え直しただけなので、実際の機能的には20151101と何も変わっていませんヽ(;´ー`)ノ



476:名無しさん@編集中
15/11/03 15:03:35.83 0X4Ryq3s.net
いつもb25パッチを上げてくださってる方、
どうか今回の1.1.6.4のパッチもお願いします。
出来れば「bcas_crypt.c」と「decode_ecm.c」を使わない方で・・・
お願いします

477:名無しさん@編集中
15/11/03 15:21:44.81 vvw1XQx9.net
手パッチだけでは無理だったの?

478:名無しさん@編集中
15/11/03 16:16:35.15 lJC1fMLW.net
指パッチン

479:名無しさん@編集中
15/11/03 21:19:37.28 +v9gKDM3.net
gitで過去バージョンにパッチ当てたブランチ作っておいてバージョン上がるたびにmasterからマージしていった方が楽だよ

480:名無しさん@編集中
15/11/03 21:30:02.88 aKgWKYzr.net
>>439
SourceTreeマジおぬぬめ

481:名無しさん@編集中
15/11/03 21:42:22.16 FKd2v58T.net
ローカルの少量パッチならgit rebaseのが楽かな
マージコミットが積み重なるの汚いし

482:名無しさん@編集中
15/11/04 00:20:21.85 RTRG9PT8.net
SourceTreeとかどれだけ速いマシン使ってもクソ重くて使ってらんない

483:名無しさん@編集中
15/11/04 19:55:22.08 eQpgC4Eq.net
手パッチでいけました

484:名無しさん@編集中
15/11/04 19:55:59.27 eQpgC4Eq.net
あID変わった
441=434です

485:名無しさん@編集中
15/11/05 06:46:02.28 +TIn4Bnh.net
>>420ですが、これ調べてみたらVPIDとPCRのPIDが同一だった。PCRのパケットはアダプテーションフィールドだけなのにスクランブル制御のビットがたってるから、TVTestからは100msごとに復号漏れがあるように見える。libarib25を修正して解決しました。

486: ◆SALrG1ld3mTc
15/11/05 12:38:16.76 E/GbanQ9.net
>>445
確かにlibarib25はアダプテーションフィールドだけのパケットは無条件で通常パケット扱いしてますね
実際復号は不要なので、単にスクランブルフラグを下げるかどうかだけの話だったと…
いろんな放送機器があるもんですねー
対応的には、flush_arib_std_b25()とproc_arib_std_b25()の2箇所にある
URLリンク(github.com)
の部分を
---
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;
}
---
に変更する感じでしょうかヽ(´ー`)ノ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch