■ このスレッドは過去ログ倉庫に格納されています
BonDriver共有ツール総合 その2
- 1 :名無しさん@編集中:2015/04/07(火) 20:25:07.03 ID:n6IDd8Gi.net
- BonDriver共有ツール総合
※前スレ
http://peace.2ch.net/test/read.cgi/avi/1366339738/
- 205 :名無しさん@編集中:2015/09/01(火) 22:34:59.56 ID:94KcBTZM.net
- >>199-201,203
>>189の対応で直るのなら、やはり原因は>>188に書いたもののようですね
ひとまず問題無くなったようで良かったです
また、再現状況からみる限り、BonDriver_PX_W3U3の方もBonDriver_BSCSと同じ原因に見えます
BonDriver_PX_W3U3と言うと、これ↓だと思いますが、
ttp://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 :名無しさん@編集中:2015/09/01(火) 23:12:16.33 ID:94KcBTZM.net
- >>204
> 視聴用ですがネットワークで別端末で利用したいのでProxyの機能は必要なのです
例えば、BDPEXへのBonDriver登録でSとして4個登録しておき、録画用Sチューナが3つで良いのならTvRockには
Sのチューナ数を3として設定しておけば、ロック権を持つクライアントは3つ以上発生しない筈なので、
残り1つのチューナは視聴用として常時使える状態になりますよね?そう言う話ではないのでしょうか?ヽ(;´ー`)ノ
> TVRockにTチューナを4つSチューナを4つ登録し最終Sチューナで視聴中に
> 番組情報の全チャンネル取得(ただし仕様で10分ほどで切れるので何度か行う)
> 3時間ほどやってProxyEXが2回落ちたので再現率はほどほど。
なるほど…
時間ができたらもうちょっと詳しく再現実験やってみます
- 207 :名無しさん@編集中:2015/09/02(水) 12:02:08.33 ID:vaUpWL7k.net
- >>205
こちら対応の方ありがとうございます。
チャンネルスキャンの方ですが、W3U3のBon_driverのバイナリを修正したのですがTVtestが落ちる症状は変わらずでした…
こちらのチャンネル設定などに間違いが無いか後でもう一度iniファイルを調べ直してみます。
(BCUDの方はドライバ修正前でもチャンネルスキャンは無事完走していました)
>>188の方ですが、gitからダウンロードしたzipからソース無改造のビルドをしてBondriver_Splitter.dllを置き換えても
TVtestでは読み込めない、モジュールが見当たらないとエラーが出ます。
複数のPCで検証して同じ事になるので、VS2015でビルドしていること自体に何か問題があるのでは
と思うのですが…
以上、2点ともこちらの環境の問題である可能性があるのでまた後で調べてみます。
- 208 :名無しさん@編集中:2015/09/02(水) 16:24:03.71 ID:IdorTQkb.net
- >>206
>そう言う話ではないのでしょうか?ヽ(;´ー`)ノ
ちょっとだけ違います。
SとT混在して話するとややこしくなるのでTだけの話にして
視聴チューナをメインに考えれば後ろ1チューナだけロックなしで
登録すればそれで問題なし!出先からでもタブレット端末でも視聴可能です。
が、前チャネルがちゃんと録画開始してるか確認したいって話になると、
チューナ選択できるわけではないしできてもロックしてないと起動した時
チャンネル変わる危険性もあるしで確認できない。って話です
使い勝手の問題ですね。Spinelでは可能でVirtualPTでもチューナはVirtualPT
まかせなので無理な使い方です。
- 209 :名無しさん@編集中:2015/09/02(水) 19:07:10.40 ID:JKKKZOzE.net
- それはtvrockにブラウザ経由でアクセスして確認することでしょ
なんで録画されてるかどうかをチューナー共有ソフトで確認するの?
そんな気になる程不安定なら環境を見直すべき
そんなにspinelと同じ使い方したいなら
チューナー1つずつグループ分けすればいいんじゃねえの
それやるとtvrockで運用する時の唯一の利点である同一チャンネルの連続した録画の切り替わりや同じ時間に同一トラポンのCSチャンネル複数同時録画等
tvrockからは複数チューナー使ってるように見えて実際は1チューナーしか使わないってのもなくなるけど
- 210 :名無しさん@編集中:2015/09/02(水) 21:39:59.32 ID:2FyvDVyy.net
- >>209
不安定じゃないですよずっと少なくとも2年はSpinelで構築してたので
>そんなにspinelと同じ使い方したいなら
>チューナー1つずつグループ分けすればいいんじゃねえの
それは既にやってみました
00=PT-Ta;
01=PT-Tb;
01=PT-sc;
01=PT-Sd;
こういうことですよね?しかしこれは過去ログですでにSとTでまとめないと駄目だと
回答がでてる内容なので残念ながら使えないようです。
- 211 :名無しさん@編集中:2015/09/02(水) 21:41:08.20 ID:2FyvDVyy.net
- 間違えたこうだった
00=PT-Ta;
01=PT-Tb;
02=PT-sc;
03=PT-Sd;
- 212 :名無しさん@編集中:2015/09/02(水) 22:04:37.79 ID:B6tqUz1r.net
- 対応してほしい気持ちはわかるけど
あまりメンテナーを困らせちゃだめだよ
- 213 :名無しさん@編集中:2015/09/02(水) 22:37:06.51 ID:iyXxQEkd.net
- >>207
ありゃ、ダメでしたか
となるとまた何か別の原因なのかもしれませんね(;´Д`)
なんだろう…
ビルドしたのが読み込めない件は、
・アプリとBonDriverのx86/x64のズレ
・MDでビルドしたけど実行環境には2015のランタイムが入っていない
辺りではないでしょうか?
当方の手元では、VS2015環境でビルドした物でも一応問題無く使えています
#もっとも、しっかりテストしてみたわけではありませんがヽ(;´ー`)ノ
- 214 :名無しさん@編集中:2015/09/02(水) 22:44:45.63 ID:iyXxQEkd.net
- >>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 :名無しさん@編集中:2015/09/03(木) 07:47:51.08 ID:+EjSP6k3.net
- >>213
原因が分かりました、おっしゃる通りで2015のランタイムが入ってないことが原因でしたw
tvtestは2015でビルドしても2013までのランタイムで動いてたので気づきませんでした。
で改めて>>188のソース改造してdllを置き換えたんですけども
BCUDの方は
修正済みBondriver_Splitterdllのみ置き換え→起動時>>185のエラー
修正済みBondriver_Splitterdll置き換え+Bondriver_BCUDのバイナリ改造→エラー無し
Bondriver_BCUDのバイナリ改造のみ→エラー無し
という結果になりました。
W3U3の方はすいません、上のように置き換えてみましたがいずれの組み合わせでもチャンネルスキャンで落ちました(>_<)
まあ火急の用事ではありませんのでこちらでもiniの設定ミスがないかまた見てみます。
- 216 :名無しさん@編集中:2015/09/03(木) 12:27:55.85 ID:Xvzsvudc.net
- >>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 :名無しさん@編集中:2015/09/04(金) 08:08:16.26 ID:uXGZ1arN.net
- >>215
基本的に>>188は、>>189と同じ事を、BonDriverを読み込む側で無理やり何とかしようとしてる物です
しかも、
> 修正済みBondriver_Splitterdllのみ置き換え→起動時>>185のエラー
と言う事は、それだけでは対応できないようですね
原因自体は推測した通りだが、別の箇所でも地雷を踏んでいる、と言う事でしょうか…
いずれにせよ、>>189のバイナリ変更を行ったなら>>188の変更は不要ですよ
W3U3の方は、多分同じ問題を持ってはいますが、それだけではなく別件の問題も持っているんでしょう…
バイナリ変更はしておいても良いかと思いますが、別件の問題を引き起こしてる原因を突き止めないと
解決は難しいかも(;´Д`)
なお、TVTestは標準ではランタイム不要な形(/MT)でビルドされるので、2013のランタイムがあるから動いてた、
と言うワケではないと思いますよ
対してBonDriver_Splitterは、標準ではランタイムが必要な形(/MD)でビルドされるようになってます
ビルドオプションを/MTに変更すればランタイム不要にできます
#一応、当方がバイナリ配布する際には/MTビルドした物を使うようにしています
- 218 :名無しさん@編集中:2015/09/04(金) 08:12:32.36 ID:uXGZ1arN.net
- >>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 :名無しさん@編集中:2015/09/04(金) 09:59:58.83 ID:L/+JKEHw.net
- >無視されるだけで、もしそこを勘違いされていると録画失敗に繋がりかねないので、ご注意くださいヽ(;´ー`)ノ念の為
ありがとうございますもちろんBonDriver_Proxy.iniに記載しています大丈夫ですバッチリです!(きっと;
- 220 :名無しさん@編集中:2015/09/04(金) 12:15:29.59 ID:GVQiqXTN.net
- >>217
こちらありがとうございます。
/MTビルドの件了解しました、勉強になりました
どちらにしろソースが公開されてない該当Bondriverのバイナリの改造が必要っぽいので、
それをBondriverproxyの作者さんにお願いするのは筋違いなので
いちおうそういう上記の症状があると言うことだけ把握して頂ければ、と思います。
なお、Bondriver_Splitterのiniファイルをtvtestのch2ファイルと照らし合わせてみましたが、チャンネル定義にはミスはありませんでした。
- 221 :名無しさん@編集中:2015/09/04(金) 22:37:31.65 ID:EnylOGHl.net
- >>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 :名無しさん@編集中:2015/09/05(土) 08:44:04.01 ID:eC/YkF4x.net
- >>221
わざわざありがとうございます。
>>201を見てもらえれば分かると思うんですけど、クライアントから鯖へBonProxyExを通す分にはうちでも正常ですよ
チャンネルスキャンで落ちるのは、自機でBondriver_Splitterを通してドライバを読み込んだときです
- 223 :名無しさん@編集中:2015/09/05(土) 09:55:18.60 ID:r5GA9NxD.net
- チャンネル開いたら絶対他に奪われないロック権限設定が欲しいなぁ
EDCBが録画してBSチューナーが埋まってるとき
設定をみようとEpgDataCap_Bonを開いてしまったら
録画中のチューナーのチャンネルが変ってしまって失敗した
まあ、自分のせいだけど事故防止のために欲しい
- 224 :名無しさん@編集中:2015/09/05(土) 12:01:29.95 ID:YA7d8p3a.net
- >>223
自分も先行ロック優先はちょっとほしいw
- 225 :名無しさん@編集中:2015/09/05(土) 18:14:57.20 ID:nG060/Qd.net
- 先行チケット、先行予約、先行販売
世の中に先行ほど大事なものはない・・ようなあるようなどっちでもいいようなけど必要なようなでもあってもなくてもいいような
それが先行
- 226 :名無しさん@編集中:2015/09/05(土) 18:55:07.38 ID:B9g+bx8m.net
- >>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 :名無しさん@編集中:2015/09/06(日) 00:50:37.24 ID:LOpIhx6I.net
- >>223-224
チャンネルロックを先行優先にしたいと言う要望がそれなりにあるみたいなので、とりあえず追加してみました
#バイナリも更新してます
0〜255の数値で優先度を設定するモデルで、数値の大きな方が優先、同値の場合は対等ですが、
255の場合のみ先行優先の排他となります
適当に思いついただけの設定方法なので、なんか問題ありそうだったら教えてくださいヽ(;´ー`)ノ
- 228 :名無しさん@編集中:2015/09/06(日) 03:30:23.00 ID:CJv1Dt4D.net
- >>226
> 上記の構成でチャンネルスキャン正常です。
> BonDriver_PX_W3U3_T0→BonDriver_Splitter_T0→TVTestだけの構成でもスキャン試してみましたが正常動作します。
んん〜?まじですか。ということはうちの環境によるものか…
こちらありがとうございます。
信号の件はTYPED以外は特に設定しておりませんです
- 229 :名無しさん@編集中:2015/09/06(日) 09:03:04.05 ID: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はチャンネルを変更出来ない!(優先度が落ちたまま?)
といった感じになります。
またいろいろ試せたら報告しますね。
よろしくお願い致します。
- 230 :229:2015/09/06(日) 09:06:21.76 ID:6iIu3b9W.net
- 追記
クライアント4も優先度255で繋いでいます。
- 231 :名無しさん@編集中:2015/09/06(日) 10:18:45.67 ID:LOpIhx6I.net
- >>229-230
> 6.を行わなかった場合、クライアント3の優先度が低いままになってしまいます。
実はそうなるのは認識していたのですが、255でクライアントAが接続しているところに更に255でクライアントBが
接続してきた状態で、Aが切断されたらBが排他権を引き継ぎたいなんて状況は(ほぼ)無いんじゃないかなーと思ったのと、
仮にそれを行うとして、Aが切断した場合に、一旦落としたBの優先度を再度255に上げる簡単でスマートな方法が
ぱっと思いつかなかったので(BだけでなくCやDが順次同じように255で繋いで来てた場合に、排他権を引き継ぐ優先度を
ちゃんとB>C>Dにする必要があるので)、とりあえずこれで良いかとそのままにした次第です(;´Д`)
基本的に255での接続が同じチューナにカブる事自体がイレギュラーだと思うので、>>223さんのような突発事故が
防げたらそれで良いかなー、みたいなカルいノリですね…
ですが、確かに自分でも若干気持ちは悪かったので、もう少しちゃんと方法考えてみますね
#思いつかなかったり、複雑になりすぎそうな場合は諦めるかもしれませんがヽ(;´ー`)ノ
- 232 :名無しさん@編集中:2015/09/06(日) 11:06:21.42 ID:6iIu3b9W.net
- >>231
返信ありがとうございます。
実は私も書いたあとに同じような感想にはなってたんですよね…
対応するコードが複雑になりそうなわりに、リターンは少なそうだなぁと。
いい方法があれば修正する方がいいとは思いますが
言われてるとおりではありますので、作者さん次第ですね。
- 233 :名無しさん@編集中:2015/09/06(日) 11:36:06.54 ID:7ITjkPZ+.net
- 今日Windows10に更新したら
「BonDriverの初期化ができません。」
何が原因だ・・・・
PT3+Windows10
BonDriverProxyEX
TVTest
- 234 :名無しさん@編集中:2015/09/06(日) 11:54:53.23 ID:KZnSYS1K.net
- >>233
今話題のwin10タイマー
インスト、アプデ後1か月でPTシリーズは使えなくなる
http://peace.2ch.net/test/read.cgi/avi/1439723402/
- 235 :名無しさん@編集中:2015/09/06(日) 14:44:19.27 ID:njts2/1u.net
- 先週の土曜の朝はちょっとした騒ぎになってたよねWin10でPTシリーズが使えなくなるの
幸いメディアさえ作ってしまえば15分くらいで元通りにできるけど問題はまたありそうだってこと
- 236 :名無しさん@編集中:2015/09/06(日) 16:16:10.38 ID:i1y+ii65.net
- 時計進めただけで引き継ぎ再インストール後もダメになったってレスあった
- 237 :名無しさん@編集中:2015/09/06(日) 16:23:11.16 ID:7ITjkPZ+.net
- Oh...ただのUpdate不具合なのか。MSの狙い打ちかもわからん現状なんデスネ。
- 238 :名無しさん@編集中:2015/09/06(日) 21:02:50.56 ID:s0D0oWRB.net
- PTのドライバー更新されるらしいからバグが直っていればいいけど・・・
もう一度バグ報告してほしいな・・・
- 239 :名無しさん@編集中:2015/09/07(月) 11:06:02.94 ID:cryiI0gR.net
- BonDriverProxyでスペース0:BS 1:CS(デフォルト)ノンロックで同じチューナ利用して
切り替えると別端末のTvTestのチャンネル情報やステータスバーが切り替わってないっぽ
映ってる番組は切り替わってるのにチャンネル情報と選択されてるチャンネルが切り替わって
ない表記のままなので(旅チャンネル/うまるちゃん)みたいなちぐはぐになってる。
スペースが違うチャンネルの時だけ発生Spinelではちゃんと切り替わってるから内部で
色々やってたんだな。録画に影響はないからプライオリティは低いかもしんないけど報告
- 240 :名無しさん@編集中:2015/09/07(月) 23:38:59.40 ID: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の視聴時にはそうなっておらず、PATの最初のサービスIDが選択されたものとして振る舞う為、
これが前者と後者の挙動の違いに繋がっています
これは現在のTVTestの仕様なので、恐らくSpinelも含めて、チューナ共有系のアプリではどれでも同じ挙動になるんじゃ
ないかと思いますヽ(;´ー`)ノ
- 241 :名無しさん@編集中:2015/09/08(火) 00:04:12.69 ID:zwgYdyKf.net
- で、このCSのみの挙動を地上波やBSのように最初のサービスIDが選択されるようにして、ついでにBonDriverの
スペース変更も検知してチャンネル情報等も正しく変更されるようにしたい場合は、
ttp://pastebin.com/xqQSphi4
の変更でそうなります
#githubへのリンクで変更場所を直接示そうとしたらNGワードとか言われて蹴られました(;´Д`)意味わからん
- 242 :名無しさん@編集中:2015/09/08(火) 00:26:34.97 ID:AnJL88Y7.net
- version 1.1.6.0地味に欲しかった機能だ
- 243 :名無しさん@編集中:2015/09/08(火) 22:11:46.03 ID:WK5DcaBx.net
- >>241
あっとまーくとかあの辺蹴られそう
- 244 :名無しさん@編集中:2015/09/09(水) 02:00:58.28 ID:gpdKgc3u.net
- 新しいBonproxy、CHANNEL_LOCK=0のクライアントAから繋いで操作した後、同じ設定のクライアントBから繋いでチャンネル変更すると
IBonDriver を取得できません。
CreateBonDriver() の呼び出しで NULL が返されました。
と出て操作不能になるんだが…
うちだけだろうか?
- 245 :名無しさん@編集中:2015/09/09(水) 05:56:52.59 ID:gpdKgc3u.net
- BonproxyEX、だった。
EXのiniにCHANNEL_LOCK=0を追加したら、直ったかな?
- 246 :名無しさん@編集中:2015/09/09(水) 08:11:22.44 ID:OroZrpia.net
- サーバー側のiniってこと?
- 247 :名無しさん@編集中:2015/09/09(水) 08:40:28.33 ID:ZcGrXdhp.net
- >>232
とりあえず対応してみました
ただの自己満足だなーと思いながらいじってたら、Exで、255のクライアントで全チューナが埋まっており、
そこに更に255のクライアントAが来て、かつAの最初のチャンネル変更要求が、Aに割り当てられた
BonDriverで既に選局されていた場合、Aの優先度を下げるべきなのに下げていないと言うバグを発見し、
潰すことができましたヽ(;´ー`)ノ
- 248 :名無しさん@編集中:2015/09/09(水) 08:46:43.94 ID:ZcGrXdhp.net
- >>244-245
TVTestでそのメッセージがでるのは、チャンネル変更のタイミングではなくBonDriver選択の
タイミングだと思うのですが、もう少し詳しい再現方法がわかれば教えてくださいヽ(;´ー`)ノ
なお、iniのCHANNEL_LOCKの値を読み込んで使用するのは、クライアント側(BonDriver_Proxy.dll)だけですので…
- 249 :名無しさん@編集中:2015/09/09(水) 09:06:59.13 ID:55Sf/lZ6.net
- >>247
ありがとうございます。
あとでまた試してみます。
読んでて混乱したけど
後から来たのにチャンネルを変えれてしまうかもしれないバグがあったってことですよね。
- 250 :名無しさん@編集中:2015/09/09(水) 13:14:09.82 ID:Nk+YlJ1J.net
- >>240
チャンネル変える時にスペース変わってなくて変える時に
選びなおしでイラっとしてたのでこれは助かる・・・。
- 251 :名無しさん@編集中:2015/09/09(水) 16:13:49.65 ID:I6d8TK6d.net
- BonProxyがどんどん便利になっていく
- 252 :名無しさん@編集中:2015/09/09(水) 20:53:37.64 ID:ZcGrXdhp.net
- >>249
いえ、後から来た方にチャンネル変更されてしまう事は無いのですが、そのクライアントが切断するまでは、
先に来てた方の排他権限を持ってるクライアントもチャンネル変更できない状態になる場合があった、
ですヽ(;´ー`)ノ
もっとも先日書いた通り、同じチューナに複数のクライアントから排他権限の要求がカブる事自体がおかしいはずですし、
仮に録画中に何らかのミスでこの状態を起こしてしまったとしても、録画中のクライアントのチャンネルが
変更されてしまうわけでもないので、正直実害はほぼ無いかなーとは思いますね…
- 253 :名無しさん@編集中:2015/09/09(水) 20:55:51.65 ID:ZcGrXdhp.net
- >>250
当方も>>241の変更は結構気に入っておりますヽ(´ー`)ノ
チューナ共有アプリ使ってて、他のクライアントにチャンネル変更される可能性がある環境では、
こう動いてくれるとちょっと嬉しいですよね
- 254 :名無しさん@編集中:2015/09/10(木) 12:18:11.52 ID:SiEUBWxt.net
- >>252
なるほど、そういうことでしたか。
- 255 :名無しさん@編集中:2015/09/10(木) 16:42:55.55 ID:0Mv4TuSo.net
- >>241
これって本家に組み込まれている?
予定あるのかな?
- 256 :名無しさん@編集中:2015/09/11(金) 04:05:06.67 ID:pyQsqCFg.net
- >244だけどやっぱりチャンネル変更を何度かしてると書いた244に書いたメッセージが出て
鯖を再起動しないといけなくなることがある
再現性が不明なので条件がよく分からないんですがBonproxyEXでも以前はなかったと思う
- 257 :名無しさん@編集中:2015/09/11(金) 09:58:02.91 ID:pyQsqCFg.net
- /MTビルドしていたので/MDビルドに戻して様子見
- 258 :名無しさん@編集中:2015/09/11(金) 10:08:15.92 ID:pyQsqCFg.net
- ビルドは無関係でした
障害が発生しているアプリケーション名: BonDriverProxyEx.exe、バージョン: 1.1.6.1、タイム スタンプ: 0x55f22516
例外コード: 0xc0000005
障害オフセット: 0x00012744
障害が発生しているプロセス ID: 0xe3c
- 259 :名無しさん@編集中:2015/09/11(金) 12:59:44.62 ID:UVBZn+Y7.net
- >>256
10分くらい似たような感じでチャンネル変え続けたけど起きない
なんかもう少し、手順が絞れれば・・・
- 260 :名無しさん@編集中:2015/09/11(金) 15:02:36.81 ID:8d+klU/R.net
- Splitter経由でUHFからBSのチャンネルに切り替えたらBonproxyEXが落ちた
環境の問題かも知れないが
- 261 :名無しさん@編集中:2015/09/11(金) 19:15:04.07 ID:Ktq8gNoc.net
- >>260
>>256と同じ人だと思うけど、せめて使用環境と設定内容を書くくらいはしなよ
俺のとこでは起きないし、他に報告が無いと言う事は多分他の人にも起きてないんだろうから、
なんか設定が間違ってる可能性が高いんじゃないかと思うけど、なんも書かれてないから
原因の推測すらできない
- 262 :名無しさん@編集中:2015/09/11(金) 21:00:04.54 ID:8phWfh86.net
- 馬鹿には無理
- 263 :名無しさん@編集中:2015/09/12(土) 04:12:07.18 ID:1hlEtHdd.net
- 開発者はエスパーじゃないからねえ。
私も、○○したら落ちたとか、起動しないとか言われることあるけど
チューナー切替のような誰でもする当たり前の動作で
ただ単に落ちたとだけ言われても、何も特定できないよどうしろっていうんだよって思うよ
- 264 :名無しさん@編集中:2015/09/12(土) 07:59:47.99 ID:FreM+lvw.net
- 環境は鯖がwin8.1でクライアントはwin7、win10など4台です。
チャンネル切り替え時にBonProxyEXが落ちるのですが発生条件が特定できないので、鯖のBonproxyEXとService splitterを6月のバージョンに戻して様子見中。
以前はなかった現象なので。
- 265 :名無しさん@編集中:2015/09/12(土) 08:02:44.68 ID:AXuWCNzY.net
- バカにはやっぱ何言っても無駄だった
- 266 :名無しさん@編集中:2015/09/12(土) 08:04:09.07 ID:FreM+lvw.net
- 朝まで待ち構えて勝利宣言のレスをつけてるかと思うと笑えるわ
- 267 :名無しさん@編集中:2015/09/12(土) 08:04:30.94 ID:1hlEtHdd.net
- >>264
その落ちたときの接続状況とかを完璧に書いてみたらありがたいんじゃないですかね。
各クライアントの設定と一緒に。
- 268 :名無しさん@編集中:2015/09/12(土) 08:05:33.31 ID:AXuWCNzY.net
- 自意識過剰でわらた
- 269 :名無しさん@編集中:2015/09/12(土) 08:06:20.80 ID:FreM+lvw.net
- もう真面目に報告する気が無くなったw
馬鹿にはつきあえんわ
- 270 :名無しさん@編集中:2015/09/12(土) 08:08:15.86 ID:AXuWCNzY.net
- バカって言われたのが相当悔しいらしいw
- 271 :名無しさん@編集中:2015/09/12(土) 08:23:35.00 ID:1hlEtHdd.net
- 結局、どういう環境なのかよくわからなかったね。
・チューナは何か(PT3なのかPT2なのか、そのほかなのか)
・チューナーは何枚あるのか
・BonDriverは何を使用しているのか
報告内容からすると、この辺の把握が最低限必要だと思うんだけども
- 272 :名無しさん@編集中:2015/09/12(土) 14:58:06.86 ID:54xOvvXZ.net
- 大雑把に書いてもわかる文章はあるけど考え先行すぎて意味が読み解けない
文章ってあるよね。おちついてきちんとまとめてから報告しよう。
- 273 :名無しさん@編集中:2015/09/12(土) 16:41:33.53 ID: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を入れて運用しています。
チャンネルを変えるとたまにTVTestが固まって、サービスを見てみるとBondriverExが停止しています。
その時はサービスを起動しなおしています。
最近作者さんが、こまめに変更を入れているようなので、変更が落ち着くまではと、
そのまま使っています。
再現性が100%ではなくたま〜になので、どうすれば落ちると答えようがないのですが・・。
ロック権限の改造後、時々落ちるのは間違いないです。
以前一部おかしかった件ですがロック権限の改造前の時、録画予定のものと違う
チャンネルの番組が録画されていたのでチャンネル設定が間違っているのかと
EpgDataCap_Bon.exeのUDP-Viewを使ってサービスを切り替えていって試してみたところ
そのチャンネルに問題ありませんでした。
続けて全チャンネルの確認をしていくとチャンネルが切り替わらないところが
あり、ch2の設定を確認しましたが問題なく、EpgDataCap_Bon.exeを立ち上げなおして
やってみると今度はうまくチャンネルが切り替わり、更に何度か続けていると
切り替わらないことが発生しました。
Win10後、BonDriver_Spliter〜EDCBまで新しいビルドの物を使っているので
どこのexe,dll,iniがおかしいのか特定できないのと、こちらも再現性が
100%ではなくたま〜になので、前レスで書きませんでしたが一応ご報告を。
続きへ
- 274 :名無しさん@編集中:2015/09/12(土) 16:42:14.04 ID: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));
だけ残して後は消してコンパイルしてます。
できればこの辺りご再考をよろしくお願いします。
- 275 :名無しさん@編集中:2015/09/12(土) 17:02:56.84 ID:t1lAERej.net
- 273で書き忘れました。
後述の以前一部おかしかった件ですが、ロック権限の改造後は
この現象は見ていません。
- 276 :名無しさん@編集中:2015/09/12(土) 20:08:13.07 ID:dFPYR6xi.net
- >>255
本家developブランチの最新ソースに対するパッチなので、本家には組み込まれてないですよ
CSの場合だけTSストリームから視聴中のサービスIDが消えた時に映像/音声を止めるのは、
フジテレビnextは契約してるけどフジテレビoneは契約していないような場合にPAT先頭サービスを選んだら、
未契約の映像/音声を再生しようとする事になるので、恐らくそうならないように想定しての仕様なのかなと思います
もっとも、現在のTVTest本体はCAS機能を持っておらず、その辺りは気にする必要は無くなってる筈なので、
リクエストしたら取り込まれる可能性もあるかもしれませんね
- 277 :名無しさん@編集中:2015/09/12(土) 20:10:38.32 ID:dFPYR6xi.net
- >>260
えーと皆さん仰ってるように、使用しているBonDriverの種類やBonDriverProxyEx.exeのiniの内容辺りを
教えていただけるでしょうか?
ただ、最近の変更でチューナの共有部分に関する大きな変更は行っていない筈なので、何が原因やら(;´Д`)
確かに設定かなとも思うのですが、設定の問題だと言うには以前のでは起こらなかったという点が謎ではありますね…
- 278 :名無しさん@編集中:2015/09/12(土) 20:25:08.93 ID:dFPYR6xi.net
- >>273-275
報告ありがとうございます
>>277にも書いた通りの感じなので、少しやっかいかもしれません(;´Д`)
手元で再現できないのがツライ…
もし可能であればデバッグビルドしてサービスでない方でデバッグ実行してみて、落ちた場所を
調べていただけるのが一番なのですが、とりあえず当方の配布バイナリで実行してみて、
落ちた時の「障害オフセット」を教えてもらえるとそれだけでも助かります
#自己ビルドではなく当方からの配布バイナリでないと、こちらに当該バイナリが無いので
#「障害オフセット」は参考にできません…
inet_ntoa()の件は、XPにはinet_ntop()が無いので、コンパイルはできても実行できなくなるんです(;´Д`)
当方の配布バイナリはVS2015でビルドしているのですが、ツールセットはv140_xpにしてます
#これならエラーにはなりません
v140でビルドすると確かにエラーになりますね
その場合は既に試されてるように、64bit側と同じ方を使うようにすれば大丈夫ですよ
- 279 :名無しさん@編集中:2015/09/12(土) 20:36:58.24 ID:KWvmWs16.net
- BonDriverProxyの作者さんはトリップ付けてもらえませんか?
後で過去ログ参照する時とか一目で判別できるので
よろしくお願いします
- 280 :名無しさん@編集中:2015/09/12(土) 21:57:13.19 ID:t1lAERej.net
- 273-275 です。
すみません、GitHubのソースの場所ならわかるのですが配布バイナリはどこでしょうか?
- 281 :名無しさん@編集中:2015/09/12(土) 22:15:22.15 ID:i385/JP8.net
- >>280
>>3に書いてあるよ
- 282 :名無しさん@編集中:2015/09/13(日) 00:32:41.43 ID: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
- 283 : ◆SALrG1ld3mTc :2015/09/13(日) 11:53:41.34 ID:/ZxTJa6Q.net
- >>279
どうせ大した事は書いてないのですが、検索用ですか…ナルホド
と言う訳で入れてみました
#当方イイカゲンなのでそのうちトリップキー忘れそうですが(;´Д`)
- 284 : ◆SALrG1ld3mTc :2015/09/13(日) 11:55:38.07 ID:/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を破棄してしまう状態が発生するのを無くせたはずです
とりあえずこれで様子見てもらえるでしょうかヽ(;´ー`)ノ
- 285 :名無しさん@編集中:2015/09/13(日) 12:12:42.18 ID:/0SFmSyX.net
- 結構流通してると思われるのにPLEX系のボンドラはソースも公開されてないしダメダメですな
- 286 :名無しさん@編集中:2015/09/14(月) 22:32:49.33 ID:tIlzQPGU.net
- 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 :名無しさん@編集中:2015/09/14(月) 23:08:16.25 ID: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();
あたりが、妥当な実装かと思うのですが、いかがでしょうか。
ご助言を頂けましたら幸いです。
- 288 :名無しさん@編集中:2015/09/15(火) 01:07:52.82 ID: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さえかからない〜♪
ネットワークプロバイダ登録直後のチューニング要求に何か設定いるのかなぁ。
ここで行き詰ってるぅぅ。
誰か動かし方わかる人いたら、この初心者に優しくおしえて!
- 289 :名無しさん@編集中:2015/09/15(火) 04:18:00.88 ID:b63Dshpf.net
- うっざ
- 290 : ◆SALrG1ld3mTc :2015/09/15(火) 06:26:33.57 ID:Vobrm9Ay.net
- >>286
ひとまず落ちないようにはなったとの事で良かったです
実は>>284の下の方で書いた変更の為、BDPEXも今の物に入れ替えると、当方が落ちる原因になっているのではないかと
推測している状況に殆ど遭遇しないようになっているはずなので、もし可能であればBDPEXは前のバージョンに戻して、
BonDriver_Splitterのみを今の物で試してみてもらえないでしょうか?
それでも落ちないようになっていて初めて、>>284の推測は当たりだったのかなと思えるのでヽ(;´ー`)ノ
別チャンネルになってしまう件は、ちと謎ですね(;´Д`)
その辺の変更は今回何も行っていないはずなのですが…
何だか、チャンネルロックされているチューナに対してチャンネル変更を試みた場合の挙動のようにも思えます
この場合アプリにはチャンネル変更成功に見えるようにしているので、もしそうなった場合、EDCBは録画対象
チャンネルに変更成功したつもりで、別チャンネルを録画してしまうと言うのが起こりそうではあります
例えば、EDCBの設定に対して実チューナ数が不足していたりするとそうなるかもしれませんね
ともあれ、BDPEXとBonDriver_Splitterをデバッグビルドしてみて、Dbgview辺りでログを眺めてみると
何かヒントがあるかもしれません…
- 291 : ◆SALrG1ld3mTc :2015/09/15(火) 06:41:48.30 ID:Vobrm9Ay.net
- >>287
> あたりが、妥当な実装かと思うのですが、いかがでしょうか。
COMの初期化/終了処理はスレッド単位で行う必要があるものなので、単一のグローバル変数でフラグを持つのは
あんまり良くないのではないかとヽ(;´ー`)ノ
例えば、
ttp://www1.axfc.net/uploader/so/3513652
等は、恐らくその点を考慮してスレッドIDを確認するようにしているのだと推測しますが、いずれにせよ、
OpenTuner()/CloseTuner()が別スレッドで行われる場合の解決にはなっていませんね
また、OpenTuner()/CloseTuner()だけでなく、SetChannel()やGetSignalLevel()等の他のAPIも、
OpenTuner()と呼び出し元スレッドが同一だとは限りません
#事実、例えばTVTestでは異なっています
その様な感じなので、個人的にはEDCB側にCOMの初期化/終了処理を追加する方が正解なんじゃないかな、と思います
やはりスレッドの最初と最後でやるのが確実なので、スレッドをつくった人が行うのがベストではないでしょうか…
- 292 : ◆SALrG1ld3mTc :2015/09/15(火) 07:06:22.10 ID:Vobrm9Ay.net
- >>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 :名無しさん@編集中:2015/09/15(火) 14:02:47.23 ID:1p/tEp51.net
- クライアントIP、使用チューナーなども含めて、
チャンネル変更や変更失敗のログとか取れるとわかりやすそうですねえ
- 294 :名無しさん@編集中:2015/09/15(火) 16:35:44.95 ID: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フジに
なるのが良いと思うのですが、どうでしょう。
お忙しい中、面倒だとは思いますがよろしくお願いいたします・・・。
- 295 : ◆SALrG1ld3mTc :2015/09/15(火) 23:38:13.64 ID:Vobrm9Ay.net
- >>293-294
> なるのが良いと思うのですが、どうでしょう。
ありがとうございます、確かにその挙動の方が良いですね
もともと優先権有りと無しの二択のみで、かつ有りのクライアントがチャンネル変更出来ない状態と言うのは
考えなくてよかったところから、ご指摘のような挙動になってましたヽ(;´ー`)ノ
対応してみたので確認してみて下さい
ログに関しては以前もリクエストいただいたのですが、あんまり優先度は高くないかなーと思って
後回しにしてしまっております(;´Д`)
- 296 :名無しさん@編集中:2015/09/16(水) 01:15:59.10 ID: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の仕組みでチューナー設定を行っていると推測しているのですが、
その処理の方法について情報が全く掴めないため、今後この直接ドライバを叩く方法で初期化処理を探ってみます。
スレ違いな件でしたが、情報大変ありがとうございました。
- 297 :名無しさん@編集中:2015/09/16(水) 03:12:19.96 ID:kPve2Fte.net
- 意味不明の自家発電書き込みにワロタw
- 298 :名無しさん@編集中:2015/09/16(水) 07:23:50.90 ID:sYR8CujZ.net
- >>295
確認してみました。
意図した動作になっていると思います。
ありがとうございました。
- 299 :名無しさん@編集中:2015/09/16(水) 07:30:55.97 ID:d1QHFDlx.net
- >>296
大変参考になります。
何か進展があれば是非おしえてください。他のPlex製品にも応用できると思いますので。
- 300 :名無しさん@編集中:2015/09/16(水) 07:55:18.64 ID:d1QHFDlx.net
- >>291
詳細な説明ありがとうございます。
当面はスレッドIDをする暫定的な対応しかないですね。
ところで、リンクのソースだとS_FALSEの時の処理が抜けてますね…
- 301 :名無しさん@編集中:2015/09/16(水) 09:19:05.96 ID: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処理を行うのが最善ではないかなと思っています。
近いうちにリンク先にあったBonDriverでそれをやってみたいと思います。
- 302 :300:2015/09/16(水) 16:35:23.46 ID:d1QHFDlx.net
- >>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 :300:2015/09/16(水) 18:08:43.78 ID: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で問題ないと思っています。
何か見当違いをしているかもしれませんが、その際はご指摘いただけたらありがたいです。
- 304 :名無しさん@編集中:2015/09/16(水) 18:11:52.70 ID:JWzbiEwR.net
- もっともCOINIT_MULTITHREADEDにしたい理由は
「若干のパフォーマンスアップがある、かも」くらいなので、
予期せぬ破綻が起きないために、とりあえずCOINIT_APARTMENTTHREADEDにする、
というのもアリだと思います。
総レス数 837
356 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200