これは 2ch DTV 板の「EpgDataCap_Bon について語るスレ 37」の 750/752/766 に書き込んだ情報についての補足説明を目的とした記事です。経緯を知りたい場合は [URI] を参照してください。
まず、EDCB の改変版には EPG データの取得に利用するチューナ数を制限する機能が追加されています。下に貼る設定画面で赤丸で囲んでいる部分です。 (この機能が最初に追加されたのは Velmy 版ですが、epgdatacapbon にも pull されているので、github 上のほぼ全ての改変版に存在します)
この画面のような設定を行った際、私は次のような挙動をしてくれるものと期待しました。
録画利用 チューナ |
チューナ1 | チューナ2 | チューナ3 | チューナ4 | チューナ5 | チューナ6 | チューナ7 | チューナ8 |
なし | EPG取得 | EPG取得 | 空 | 空 | 空 | 空 | 空 | 空 |
1 | 録画中 | EPG取得 | EPG取得 | 空 | 空 | 空 | 空 | 空 |
3 | 録画中 | 録画中 | 録画中 | EPG取得 | EPG取得 | 空 | 空 | 空 |
7 | 録画中 | 録画中 | 録画中 | 録画中 | 録画中 | 録画中 | 録画中 | EPG取得 |
しかし、実際の挙動は次のようなものでした。
録画利用 チューナ |
チューナ1 | チューナ2 | チューナ3 | チューナ4 | チューナ5 | チューナ6 | チューナ7 | チューナ8 |
なし | EPG取得 | EPG取得 | 空 | 空 | 空 | 空 | 空 | 空 |
1 | 録画中 | EPG取得 | 空 | 空 | 空 | 空 | 空 | 空 |
3 | 録画中 | 録画中 | 録画中 | 空 | 空 | 空 | 空 | 空 |
7 | 録画中 | 録画中 | 録画中 | 録画中 | 録画中 | 録画中 | 録画中 | 空 |
なぜこうなるかと言うと「EPGデータの取得に使用する」の設定は、2014/06/16 時点のソースでは、複数チューナ中で先頭から指定された数のものに対して EPG 取得に利用可能というフラグを立てる (それ以外のチューナは EPG 取得に使えない) だけの仕様になっているからです。実際には EpgTimerSrv\TunerManager.cpp の TunerManager::ReloadTuner() で次のようなチューナ配列が設定されるという挙動になっています。
EPG取得 チューナ |
チューナ1 | チューナ2 | チューナ3 | チューナ4 | チューナ5 | チューナ6 | チューナ7 | チューナ8 |
0(def) | EPG & |
EPG & |
EPG & |
EPG & |
EPG & |
EPG & |
EPG & |
EPG & |
2 | EPG & |
EPG & |
録画のみ | 録画のみ | 録画のみ | 録画のみ | 録画のみ | 録画のみ |
4 | EPG & |
EPG & |
EPG & |
EPG & |
録画のみ | 録画のみ | 録画のみ | 録画のみ |
「EPGデータ取得に使用する」のチューナ数としてデフォルトの0を指定している場合は全チューナが EPG 取得と録画が可能になり、それ以外の値を設定した場合は先頭から指定した数のチューナまでが EPG 取得と録画の両方に利用可能となって、残りのチューナは録画にしか使えない形となります。
元々私が「EPGデータ取得に使用するチューナを制限したい」と望んだのは、「録画中であっても空きチューナがあれば EPG の更新を行いたいが、無制限に EPG 取得を行うと、録画が 1 つ走っている際に EPG 取得向けに地上波 7 個、BS/CS で 3 個の EpgDataCap_Bon が起動し、アプリケーション起動に伴う負荷が原因で録画中のデータにドロップが発生してしまう」ということが原因ですので、この仕様はまったくありがたくありません。
上の画像のように同時に 5 チューナまでは利用することがあるので、そうした場合でも EPG 更新が行われるように「EPGデータ取得チューナ」として 6 を設定すると 1 チューナしか使っていない時に地上波だけで 5 個も EPG 取得用の EpgDataCap_Bon が起動してしまいます。なかなかそうした危ない橋を渡る気にはなれません。
また、末尾 2 チューナは全く何も利用されないで待機電力を消費するだけの代物となり、これまたありがたくありません。
ただ、この辺りの問題の解決にあまり力を注ぐ気にもなれなかったので、手元対処で行った変更が 766 に書き込んだパッチです。あれを適用した場合、EDCB が管理するチューナは次のようになります。
EPG取得 チューナ |
チューナ1 | チューナ2 | チューナ3 | チューナ4 | チューナ5 | チューナ6 | チューナ7 | チューナ8 |
2 | 録画のみ | 録画のみ | 録画のみ | 録画のみ | 録画のみ | 録画のみ | EPG & |
EPG & |
4 | 録画のみ | 録画のみ | 録画のみ | 録画のみ | EPG & |
EPG & |
EPG & |
EPG & |
766 に書き込んだパッチが行うのは EPG取得と録画の両方に対応するチューナを後ろから確保するように変更するだけです。録画用のチューナは基本的に先頭から確保されていくので、EPG 取得が許可されているチューナは空きのまま残り、録画中の EPG 取得に使えるようになります。
PT3 x 4 (地上波 8 チューナ / 衛星 8 チューナ) 環境で 「EPGデータ取得チューナ」に「2」を設定する環境であればこの変更で実用上問題となることはないのですが、チューナ数が少ない場合微妙な挙動を示します。例えば次に示す画像のようなチューナ割り当てとなった場合です。
この画像の場合、19:00 以降であれば「チューナ2」「チューナ3」が空いています。全チューナ数が「6」で「EPGデータ取得チューナ」が「2」の場合であれば、19:00〜20:00 の EPG 更新では 2 つ EPG データ取得用の EpgDataCapBon が起動するのが望ましい挙動だと思いますが「チューナ5」と「チューナ6」しか EPG 取得には使えない設定として解釈されていますので「チューナ6」を利用した 1 つしか EPG 取得用の EpgDataCap_Bon は起動しません。
これが 766 に書き込んだパッチに対して「暫定」とか「やっつけ」という自己評価をしている点です。(まー現行仕様で 751 設定の場合でもこうしたチューナ割り当てが行われると EPG 取得x2 + 録画x2 でチューナ全消費とか発生してしまうのですけれどね)