地デジ (GR) の場合

地デジチャンネルの NID (network_id / ネットワーク ID) が同じかどうかで判断できる。

たとえば、TOKYO MX1 と TOKYO MX2 は同じ NID (32391) で放送されている。

Untitled

Untitled

また、地デジチャンネルの SID (service_id / サービス ID) をビット演算することでも判断できる。

service_id に 0x0187 を AND 演算すると、ARIB TR-B14 第五分冊 第七編 9.1 で示されている通り、サービス番号以外がビットマスクされるため、service_id からサービス番号だけを抽出できる。

0x0187 はビット単位に直すと 0b0000000110000111 になるので、service_id に対しての AND 演算でビットマスク(1以外のビットを強制的に0に設定)すると、サービス種別とサービス番号だけが取得できる。

ビットマスクした値のサービス種別が 0(テレビ型)でサービス番号が 0(プライマリサービス)であればメインチャンネルと判定できるし、そうでなければサブチャンネルだと言える。

BS の場合

一方、BS は NID (network_id / サービス ID) が 4 で固定されている。

さらに、サブチャンネル扱いではいけないチャンネル(それぞれのチャンネルでまったく別の内容を放送している WOWOW・スターチャンネル・放送大学)もある。

そうなると、NHKBS1 〜 BSフジ までを特別扱いするほかない。

Mirakurun の API は物理チャンネルも取ることができる。 BS の概ねチャンネルごとに別れているように見えるが、実際はスターチャンネル2と3が同じ物理チャンネルに同居しているので無理。

Untitled

今のところ、KonomiTV ではこのようなコードで判定している。

BS放送事業者一覧 - Wikipedia

民放に割り当てられたサービス ID は、上2桁が形式上の事業者番号を示している。

たとえば NHK は 10、BS日テレは 14、BS11 は 21、BS12 は 22 になる。 ただBSデジタルテレビジョン放送に割り当てられているのは 00x ~ 29x までなので、BSスカパー範囲のチャンネルも1事業者1サービスで割り当ててしまうと容易に枠が不足する。