後日、本家のTvRockOnTVTest(修正版8)で対応されたのを確認したので、そっちを使用することで改造とかせずに解決。
明石ケーブルテレビでは以下のように地デジの再配信がUHF帯とCATV帯にまたがって行われているので、UHF13〜62とCATV13〜63を意図的に混合して指定できないTvRockでは全てのチャンネルを設定できない。
UHF 13 近畿広域1 021 NHK教育・大阪 UHF 14 近畿5 101 読売テレビ UHF 15 近畿広域3 061 ABCテレビ CATV29 ACTV135 111 ACTV135 CATV32 兵庫0 011 NHK総合・神戸 CATV33 兵庫0 031 サンテレビ CATV43 大阪6 071 テレビ大阪 CATV62 近畿4 081 関西テレビ CATV63 近畿2 041 MBS毎日放送
そこで、TvRockからTVTestを呼び出す際に利用するプラグインのTvRockOnTVTest (修正版)を改造して、地デジでチャンネル番号が63〜113だった場合、CATV13〜63として扱うようにしてみた。以下、その手順。
でも、何かうまく動作してないっぽいので以下削除。
TvRockOnTVTest (修正版)に含まれるSources.zipを解凍してTvRockOnTVTest.cppの「if (m_TerrestrialIndex>=0 && dwChannel<=63) {」行(SetChannel関数内)の手前に以下を追加。
DWORD dwOffset; dwOffset=0; if(m_TerrestrialIndex>=0) { if(dwChannel>=63) { m_TerrestrialIndex=1; dwOffset=50; } else { m_TerrestrialIndex=0; } }
あとは以下のように「dwChannel」を「(dwChannel-dwOffset)」に書き換え。(すべてSetChannel関数内)
if (m_TerrestrialIndex>=0 && dwChannel<=63) { ↓ if (m_TerrestrialIndex>=0 && (dwChannel-dwOffset)<=63) { if (ChannelInfo.Channel==dwChannel-13 ↓ if (ChannelInfo.Channel==(dwChannel-dwOffset)-13 if (ChannelInfo.Channel==dwChannel-13) { ↓ if (ChannelInfo.Channel==(dwChannel-dwOffset)-13) {
Visual C++ 2008 Express Editionをインストール。TvRockOnTVTest.vcprojを開いて、ビルド→構成マネージャでアクティブソリューション構成をDebugからReleaseに変更して閉じる、ビルド→TvRockOnTVTest のビルド。オリジナルはVisual C++ 2005でビルドされているとのことだったが、特に設定変更やソースを書き換えることもなくビルドできた模様。
肝心のTvRockOnTVTest.tvtpはReleaseフォルダに出来上がっている。ちなみに当然ながらTvRockOnTVTest.iniで意図的にTerrestrialIndexを指定しても意味は無い(チャンネル番号でTerrestrialIndexの値が変わるので)。
ドキュメントに改変・再配布など特に制限は設けませんとあったので、出来上がったバイナリのTvRockOnTVTest.tvtpと改変したソースのTvRockOnTVTest.cppだけをzip圧縮したものを置いておく。
かなりいいかげんな方法でソースを書き換えたみたけど、ちゃんと動いてるっぽいのでまあいいだろう。さてと、今晩帰ったら自宅で本番環境組んで動作確認してみるか。
参考:窓の杜 - 【NEWS】MS、「Visual Studio 2008 Express Edition」の日本語正式版を無償公開