TVTest0.9.0 多重フレームヘッダ対応パッチ当て CATVをPCで録画 事前調査その2

TVTest0.9.0、地上波と110度衛星だけに使用するなら転がっている奴で十分かもしれないが、

Bondriver_BDAとの組み合わせで、
Superbird-C2/B2、JCSAT-2B/5A、Asiasat-5、Intelsat-19他のSNGや通信・放送の視聴のためには、

https://github.com/DBCTRADO/TVTest/commits/develop
2016年8月中旬以降のdevブランチを使う必要がある。
(ありがたいことにMP1/2の音声に対応、大体多くの伝送はMP1/2、稀にAACという程度)
(正直これに拘る必要はなく、DVBDream等でも十分なのではあるが、テレビと同じように見れたら楽であるという理由から)

VisualStudio2013(Express)でのTVTestビルド
http://dtv.air-nifty.com/sphd/2015/04/visualstudioexp.html

ビルドだけならもうワンクリックなのでなんてこともない・・・

そして次はCATV。デジタル有線テレビジョン放送は帯域の都合により、面倒なことが行われている。

JCTEA STD-002 に規定された、PID:0x002Fを含むストリーム(のうち一部)は今までのTVTestで再生すると、大量にドロップしてしまう。
ITU-T J.183方式と呼ぶらしいが、これまたガラパゴス・・・。DVB-C2(J.382)にすればいいのに。

JCTEA STD-002-5.3 デジタル有線テレビジョン放送「多重化装置」
http://www.catv.or.jp/jctea/spec/standard/pdf/STD002.pdf

0x002f2.png
0x002f1.png

バイナリを眺めてみると、ちゃんと188バイトごとに、同一PIDごとの巡回カウンタは連続しているし、ファイルとしては問題無い。

この多重フレームヘッダ自体は全てのBSチャンネル(地元局は地上波も)に含まれているのだが、再生できなくなるかどうか(=ヘッダ自体はあっても単一ストリームならOK?)はCATV局によって異なるようだ。

多重フレームTSMF(Transport Streams Multiplexing Frame)に関して、複数搬送波伝送方式のうち、”複数の搬送波で一つのストリーム”となる(=伝送容量を超えるストリーム、8K等)は、ハードウェア側の物理的対応が必要なため、これは受信が不可能。

言い換えれば、1トラポン4番組のチャンネルを、2つの周波数帯に分けて再送信するものはOKだが、1トラポン1番組のチャンネルを2つの周波数帯にまたがって再送信するものはダメだ、ということになる。
総務省はこれをJ.183の拡張方式と呼んでいるらしい。メンドクサー。

結局。私の所は地上波BSの半分以上が再生できず。とある地域のJ:COMはBS朝日だけ、という報告もあるし、運次第ではある。

さて、ありがたいことにBonTsEngineに含まれるTsPacketParserのパッチを書いてくれた方が居たので(TSMF.txt)

それを適用する。

自分にとってはあのファイルを見て、最初は???という感じであったのだが、Windows環境でも難なくパッチ当てが成功したので、メモとして残しておきたい。

使用ソフトはGNU patch 2.5.4 (Win32 版)

プログラミング・ツール(移植ソフト)
http://cetus.sakura.ne.jp/softlab/toolbox1/index.html

TSMF.txtは2つのファイルのパッチなので
TsPacketParser.cpp.patch
TsPacketParser.h.patch
という形で分離した(しなくても良いのかもしれない。)
階層は無くなっているので、ファイルの先頭は

— TsPacketParser.h
+++ TsPacketParsernew.h

— TsPacketParser.cpp
+++ TsPacketParsernew.cpp

という風に編集しておいた。

TVTestのソースから、上記2つのソースファイルを持ってきて、同じフォルダに投入。

管理者権限でコマンドプロンプトを起動し、カレントディレクトリを移動

C:\Windows\system32>cd C:\Users\XXXXXX\Desktop\patc254w

C:\Users\XXXXXX\Desktop\patc254w>patch < TsPacketParser.h.patch
patching file TsPacketParser.h
patch unexpectedly ends in middle of line
Hunk #1 succeeded at 40 with fuzz 2.

C:\Users\XXXXXX\Desktop\patc254w>patch < TsPacketParser.cpp.patch
patching file TsPacketParser.cpp
patch unexpectedly ends in middle of line
Hunk #7 succeeded at 266 with fuzz 1.

そして出来たファイルを元のフォルダに戻して終わり。

無事全てのチャンネルで正常に再生できるようになった。

嘘嘘、地上波とその他のBSはOKになったが、BS11とBS12 トゥエルビは×。今度ヘッダを見返してみましょう。
見返しました。

また別の記事で書くが、地上波のチャンネルはパススルーとトラモジ両方で配信されており、画質を見比べると圧倒的にトラモジチャンネルが綺麗。ビットレートが倍くらいあるようだ。
当該ストリームのみを取り出してみたらビットレートは普通の地上波同等でした。
ということは、余っているスペースが勿体無い・・・?