@danything/arib 1.0.2 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,13 +6,13 @@
6
6
  * なめらかに引き伸ばしても階段がぼやけて残る (スピーカー 🔊 の外字など)。
7
7
  *
8
8
  * 以前は libaribcaption の描き手にパッチを当てて同じことをしていた (#554)。描くのを受け側に移したとき (#571〜#586)
9
- * にその直しが落ちたので、**サーバで1回だけ** やって、濃淡の画像 (`bits: 4`・`depth: 16`) で送る。受け側は
9
+ * にその直しが落ちたので、**サーバで 1 回だけ** やって、濃淡の画像 (`bits: 4`・`depth: 16`) で送る。受け側は
10
10
  * もともと `bits` 1・2・4・8 を読み、濃さを字の色の不透明度に掛けて引き伸ばすので変えなくてよい。
11
11
  *
12
12
  * 1. **水増しを畳む** (`collapseDoubled`)。放送はよく 18x18 の字を縦横 2 倍の 36x36 で送ってくる。
13
13
  * 同じ並びが 2 つずつ続く行・列を 1 つにする (失うものは無い)。そうしないと次の段で階段を階段と見られない
14
14
  * 2. **Scale2x (EPX) で斜めを丸める** (`scale2x`)。斜めの階段を細かくする。縦横の線はまっすぐのまま残るが、
15
- * 塗りの出っ張った角は元の1点ぶんほど丸まる (EPX の性質。#554 のパッチも同じで、フォントの字に近い見た目になる)
15
+ * 塗りの出っ張った角は元の 1 点ぶんほど丸まる (EPX の性質。#554 のパッチも同じで、フォントの字に近い見た目になる)
16
16
  * 3. **縮めて濃淡にする** (`boxDown`・`pack4`)。細かくした画像を 4x4 ずつ平均し、縁に中間の濃さを付ける。
17
17
  * 縦横の線は元の画素の境目に落ちるので、ぼけずにくっきり残る
18
18
  *
@@ -25,7 +25,7 @@ const TARGET = 64;
25
25
  const MAX = 256;
26
26
  /** 最後に平均する一辺。Scale2x をこのぶん余計にかけておく (4 なら 2 回) */
27
27
  const BOX = 4;
28
- /** 放送の詰め方 (左上から1画素 `bits` ビット、上の桁から) を開いて、濃さ 0〜255 にする */
28
+ /** 放送の詰め方 (左上から 1 画素 `bits` ビット、上の桁から) を開いて、濃さ 0〜255 にする */
29
29
  export function decodeGrey(width, height, depth, bits, data) {
30
30
  const pixels = new Uint8Array(width * height);
31
31
  const mask = (1 << bits) - 1;
@@ -152,8 +152,8 @@ export function smoothDrcs(width, height, depth, bits, data) {
152
152
  };
153
153
  }
154
154
  /**
155
- * 濃さを 16 階調にして1画素4ビットで詰める (左の画素が上の桁)。4x4 の平均は白黒の画像からだと 17 階調しか
156
- * 出ないので、8 ビットで送っても見た目は変わらず倍の大きさになるだけ (外字の画像は字幕の1枚ごとに付く)
155
+ * 濃さを 16 階調にして 1 画素 4 ビットで詰める (左の画素が上の桁)。4x4 の平均は白黒の画像からだと 17 階調しか
156
+ * 出ないので、8 ビットで送っても見た目は変わらず倍の大きさになるだけ (外字の画像は字幕の 1 枚ごとに付く)
157
157
  */
158
158
  export function pack4(g) {
159
159
  const out = new Uint8Array(Math.ceil(g.pixels.length / 2));
package/dist/dsmcc.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * データカルーセル (DSM-CC) をデコードする。**放送が同じものを何度も回してくる**中から、
3
- * ブロックを集めて1つのモジュールに組み立て直すところまで。
3
+ * ブロックを集めて 1 つのモジュールに組み立て直すところまで。
4
4
  *
5
- * 使う側が2つある。**中身の読み方だけが違って、運び方は同じ**なので、ここに寄せる。
5
+ * 使う側が 2 つある。**中身の読み方だけが違って、運び方は同じ**なので、ここに寄せる。
6
6
  *
7
7
  * - [logo-dsmcc.ts](https://github.com/danything/denpa/blob/main/src/lib/ts/logo-dsmcc.ts) … 衛星の局ロゴ (ARIB STD-B21)
8
8
  * - [bml.ts](bml.ts) … データ放送 (ARIB STD-B24 / TR-B14・TR-B15)
@@ -14,15 +14,15 @@
14
14
  * 3. 全ブロック揃うとモジュールになる
15
15
  *
16
16
  * セクションを取り出すのは [psi.ts](psi.ts) の `SectionAssembler`。**`'syntax'` を
17
- * 渡すこと** — DSM-CC は `section_syntax_indicator` が立たないことがあり、そのときは
18
- * 末尾4バイトが CRC ではなく Checksum なので、いつも確かめると全部捨ててしまう。
17
+ * 渡すこと。** DSM-CC は `section_syntax_indicator` が立たないことがあり、そのときは
18
+ * 末尾 4 バイトが CRC ではなく Checksum なので、いつも確かめると全部捨ててしまう。
19
19
  */
20
20
  export declare const TABLE_DII = 59;
21
21
  /** ストリーム記述子。NPT と イベントメッセージが載る (データ放送だけが使う) */
22
22
  export declare const TABLE_STREAM_DESCRIPTOR = 61;
23
23
  /**
24
- * 同じカルーセルの中の「回」。**downloadId の上位4ビットに入っている**
25
- * (下位28ビットは常に1で運用される)。
24
+ * 同じカルーセルの中の「回」。**downloadId の上位 4 ビットに入っている**
25
+ * (下位 28 ビットは常に 1 で運用される)。
26
26
  *
27
27
  * 番組が変わるとここが変わるので、**前の番組のモジュールを捨てる合図**になる。
28
28
  */
@@ -67,12 +67,12 @@ export interface Ddb {
67
67
  * adaptationLength ぶん飛ばした先に本体が入っている。
68
68
  */
69
69
  export declare function parseDii(section: Uint8Array): Dii | null;
70
- /** DDB (Download Data Block)。モジュールを割ったブロックが1つ入っている */
70
+ /** DDB (Download Data Block)。モジュールを割ったブロックが 1 つ入っている */
71
71
  export declare function parseDdb(section: Uint8Array): Ddb | null;
72
72
  /**
73
73
  * 組み立てるモジュールの大きさの上限 (16MiB)。**これより大きいと言う DII は信じない。**
74
74
  *
75
- * `moduleSize` は32ビットで、そのまま信じると DII 1つで 4GB を確保させられる。
75
+ * `moduleSize` は 32 ビットで、そのまま信じると DII 1 つで 4GB を確保させられる。
76
76
  * 実際のデータ放送のモジュールは数 KB〜数百 KB、衛星のロゴも全局ぶんで数百 KB なので、
77
77
  * 十分に余裕を見た値。zlib で伸ばしたあとの大きさにも同じ上限を使う ([bml.ts](bml.ts) の `inflate`)
78
78
  */
@@ -92,18 +92,18 @@ export declare class ModuleBuilder {
92
92
  private readonly moduleSize;
93
93
  private readonly blockSize;
94
94
  private buffer;
95
- /** 受け取ったブロック番号 (1ブロック1ビット)。最初のブロックが来てから確保する */
95
+ /** 受け取ったブロック番号 (1 ブロック 1 ビット)。最初のブロックが来てから確保する */
96
96
  private received;
97
97
  private count;
98
98
  private readonly total;
99
99
  constructor(moduleVersion: number, moduleSize: number, blockSize: number);
100
100
  /** 組み立てた中身。まだ届いていないところは 0。**揃ってから読むこと** (読むとモジュールの大きさぶんを確保する) */
101
101
  get data(): Uint8Array;
102
- /** 受け取ったブロックの数 (同じブロックを2度受けても1つ) */
102
+ /** 受け取ったブロックの数 (同じブロックを 2 度受けても 1 つ) */
103
103
  get blocks(): number;
104
104
  /** 揃ったか。**大きさ 0 のモジュールは初めから揃っている** (運ぶブロックが無いので DDB を待たない) */
105
105
  get complete(): boolean;
106
- /** ブロックを1つ置く。**揃ったら true** */
106
+ /** ブロックを 1 つ置く。**揃ったら true** */
107
107
  add(blockNumber: number, block: Uint8Array): boolean;
108
108
  /** 入れ物を広げる。何度も写し直さないよう倍々で、モジュールの大きさまで */
109
109
  private grow;
package/dist/dsmcc.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * データカルーセル (DSM-CC) をデコードする。**放送が同じものを何度も回してくる**中から、
3
- * ブロックを集めて1つのモジュールに組み立て直すところまで。
3
+ * ブロックを集めて 1 つのモジュールに組み立て直すところまで。
4
4
  *
5
- * 使う側が2つある。**中身の読み方だけが違って、運び方は同じ**なので、ここに寄せる。
5
+ * 使う側が 2 つある。**中身の読み方だけが違って、運び方は同じ**なので、ここに寄せる。
6
6
  *
7
7
  * - [logo-dsmcc.ts](https://github.com/danything/denpa/blob/main/src/lib/ts/logo-dsmcc.ts) … 衛星の局ロゴ (ARIB STD-B21)
8
8
  * - [bml.ts](bml.ts) … データ放送 (ARIB STD-B24 / TR-B14・TR-B15)
@@ -14,8 +14,8 @@
14
14
  * 3. 全ブロック揃うとモジュールになる
15
15
  *
16
16
  * セクションを取り出すのは [psi.ts](psi.ts) の `SectionAssembler`。**`'syntax'` を
17
- * 渡すこと** — DSM-CC は `section_syntax_indicator` が立たないことがあり、そのときは
18
- * 末尾4バイトが CRC ではなく Checksum なので、いつも確かめると全部捨ててしまう。
17
+ * 渡すこと。** DSM-CC は `section_syntax_indicator` が立たないことがあり、そのときは
18
+ * 末尾 4 バイトが CRC ではなく Checksum なので、いつも確かめると全部捨ててしまう。
19
19
  */
20
20
  import { u16, u32 } from "./bytes.js";
21
21
  import { descriptors } from "./psi.js";
@@ -30,8 +30,8 @@ const MODULE_DESC_COMPRESSION = 0xc2;
30
30
  /** DII が blockSize を持っていないときの既定 (ARIB TR-B15) */
31
31
  const DEFAULT_BLOCK_SIZE = 4066;
32
32
  /**
33
- * 同じカルーセルの中の「回」。**downloadId の上位4ビットに入っている**
34
- * (下位28ビットは常に1で運用される)。
33
+ * 同じカルーセルの中の「回」。**downloadId の上位 4 ビットに入っている**
34
+ * (下位 28 ビットは常に 1 で運用される)。
35
35
  *
36
36
  * 番組が変わるとここが変わるので、**前の番組のモジュールを捨てる合図**になる。
37
37
  */
@@ -93,7 +93,7 @@ export function parseDii(section) {
93
93
  else if (tag === MODULE_DESC_TYPE)
94
94
  contentType = new TextDecoder("ascii").decode(descriptor);
95
95
  else if (tag === MODULE_DESC_COMPRESSION && descriptor.length >= 5) {
96
- // 先頭1バイトは符号付き。運用されるのは 0 (zlib) だけ
96
+ // 先頭 1 バイトは符号付き。運用されるのは 0 (zlib) だけ
97
97
  compression = {
98
98
  type: (descriptor[0] << 24) >> 24,
99
99
  originalSize: u32(descriptor, 1),
@@ -124,7 +124,7 @@ export function parseDii(section) {
124
124
  }
125
125
  return { downloadId, transactionId, blockSize, modules, returnToEntry };
126
126
  }
127
- /** DDB (Download Data Block)。モジュールを割ったブロックが1つ入っている */
127
+ /** DDB (Download Data Block)。モジュールを割ったブロックが 1 つ入っている */
128
128
  export function parseDdb(section) {
129
129
  if (section[0] !== TABLE_DDB)
130
130
  return null;
@@ -155,7 +155,7 @@ export function parseDdb(section) {
155
155
  /**
156
156
  * 組み立てるモジュールの大きさの上限 (16MiB)。**これより大きいと言う DII は信じない。**
157
157
  *
158
- * `moduleSize` は32ビットで、そのまま信じると DII 1つで 4GB を確保させられる。
158
+ * `moduleSize` は 32 ビットで、そのまま信じると DII 1 つで 4GB を確保させられる。
159
159
  * 実際のデータ放送のモジュールは数 KB〜数百 KB、衛星のロゴも全局ぶんで数百 KB なので、
160
160
  * 十分に余裕を見た値。zlib で伸ばしたあとの大きさにも同じ上限を使う ([bml.ts](bml.ts) の `inflate`)
161
161
  */
@@ -175,7 +175,7 @@ export class ModuleBuilder {
175
175
  moduleSize;
176
176
  blockSize;
177
177
  buffer = new Uint8Array(0);
178
- /** 受け取ったブロック番号 (1ブロック1ビット)。最初のブロックが来てから確保する */
178
+ /** 受け取ったブロック番号 (1 ブロック 1 ビット)。最初のブロックが来てから確保する */
179
179
  received = null;
180
180
  count = 0;
181
181
  total;
@@ -192,7 +192,7 @@ export class ModuleBuilder {
192
192
  this.grow(this.moduleSize);
193
193
  return this.buffer;
194
194
  }
195
- /** 受け取ったブロックの数 (同じブロックを2度受けても1つ) */
195
+ /** 受け取ったブロックの数 (同じブロックを 2 度受けても 1 つ) */
196
196
  get blocks() {
197
197
  return this.count;
198
198
  }
@@ -200,7 +200,7 @@ export class ModuleBuilder {
200
200
  get complete() {
201
201
  return this.count >= this.total;
202
202
  }
203
- /** ブロックを1つ置く。**揃ったら true** */
203
+ /** ブロックを 1 つ置く。**揃ったら true** */
204
204
  add(blockNumber, block) {
205
205
  if (this.moduleSize > MAX_MODULE_SIZE)
206
206
  return false;
package/dist/eit.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * 空いているだけ並列に回せる**し、録画で開いているチャンネルのぶんはただで
6
6
  * 手に入る ([agent.md](https://github.com/danything/denpa/blob/main/docs/agent.md))。
7
7
  *
8
- * 扱うのは2種類。
8
+ * 扱うのは 2 種類。
9
9
  *
10
10
  * - **EIT[p/f]** (table_id 0x4E) … いま流れている番組と次の番組。**放送に追従する。**
11
11
  * 野球で延びた終了時刻はここに出る
@@ -20,9 +20,9 @@ interface EventAudio {
20
20
  /**
21
21
  * 放送が自分で付けた名前。**「主音声ステレオ」「解説ステレオ」。**
22
22
  *
23
- * 同じ構成の音声が2本ある番組 (解説放送・二重音声) は、種別も言語も同じに
23
+ * 同じ構成の音声が 2 本ある番組 (解説放送・二重音声) は、種別も言語も同じに
24
24
  * なるので**符号からは区別が付かない**。実機の日テレでは、どちらも
25
- * `component_type=3 lang=jpn` で「ステレオ (日本語)」が2つ並んでいた。
25
+ * `component_type=3 lang=jpn` で「ステレオ (日本語)」が 2 つ並んでいた。
26
26
  * 見分けが付くものはここにしか無い
27
27
  */
28
28
  text?: string;
@@ -30,7 +30,7 @@ interface EventAudio {
30
30
  main?: boolean;
31
31
  }
32
32
  /**
33
- * シリーズ (series_descriptor。ARIB STD-B10 第2部)。**載せる局と載せない局がある。**
33
+ * シリーズ (series_descriptor。ARIB STD-B10 第 2 部)。**載せる局と載せない局がある。**
34
34
  *
35
35
  * `seriesId` で決まるのは**その局の中だけ**。番号は局ごとに振るので、別の局の同じ番号は
36
36
  * 別のシリーズ。比べるときは局 (original_network_id + service_id) と組にする
@@ -44,7 +44,7 @@ export interface EitSeries {
44
44
  */
45
45
  repeatLabel: number;
46
46
  /**
47
- * 編成の型 (program_pattern)。0=不定期 1=帯 (毎日・平日のみなど) 2=週1回 3=月1回
47
+ * 編成の型 (program_pattern)。0=不定期 1=帯 (毎日・平日のみなど) 2=週 1 回 3=月 1 回
48
48
  * 4=同じ日に何話か 5=長い番組を分けたもの。6・7 はここでは意味を読まない
49
49
  */
50
50
  programPattern: number;
@@ -65,7 +65,7 @@ export interface EitEvent {
65
65
  transportStreamId: number;
66
66
  originalNetworkId: number;
67
67
  eventId: number;
68
- /** 開始時刻 (epoch ms)。未定 (全ビット1) なら null */
68
+ /** 開始時刻 (epoch ms)。未定 (全ビット 1) なら null */
69
69
  startAt: number | null;
70
70
  /** 尺 (ms)。未定なら null。番組表に入れられるのは決まっているものだけ */
71
71
  duration: number | null;
@@ -107,7 +107,7 @@ export interface EitSection {
107
107
  version: number;
108
108
  sectionNumber: number;
109
109
  lastSectionNumber: number;
110
- /** このセグメント (8セクション単位) で実際に使われている最後のセクション */
110
+ /** このセグメント (8 セクション単位) で実際に使われている最後のセクション */
111
111
  segmentLastSectionNumber: number;
112
112
  /** この局で使われている最後の table_id。番組表がどこまで先を持っているか */
113
113
  lastTableId: number;
@@ -118,22 +118,22 @@ export declare const PID_TIME = 20;
118
118
  /**
119
119
  * TDT / TOT のセクションから**放送の実時刻**を読む。別のテーブルなら null。
120
120
  *
121
- * 頭3バイトのあとに MJD + BCD が5バイト。**TOT も同じ並び**で、後ろに
121
+ * 頭 3 バイトのあとに MJD + BCD が 5 バイト。**TOT も同じ並び**で、後ろに
122
122
  * 時差の記述子が付くだけなので同じに読める。
123
123
  *
124
124
  * データ放送 (`bml.ts` の `onTime`) が読み、BML の時計にします
125
125
  */
126
126
  export declare function parseTimeTable(section: Uint8Array): number | null;
127
127
  /**
128
- * MJD + BCD の5バイトを epoch ms に直す。
128
+ * MJD + BCD の 5 バイトを epoch ms に直す。
129
129
  *
130
- * 全ビットが1なら「未定」。開始時刻が未定の番組は番組表に置けないので null で返す。
130
+ * 全ビットが 1 なら「未定」。開始時刻が未定の番組は番組表に置けないので null で返す。
131
131
  */
132
132
  export declare function parseMjdTime(data: Uint8Array, at: number): number | null;
133
- /** BCD 3バイトの尺 (時分秒) を ms に。全ビット1なら「終了未定」 */
133
+ /** BCD 3 バイトの尺 (時分秒) を ms に。全ビット 1 なら「終了未定」 */
134
134
  export declare function parseBcdDuration(data: Uint8Array, at: number): number | null;
135
135
  /**
136
- * EIT のセクションを1本読む。自局のもの以外は null。
136
+ * EIT のセクションを 1 本読む。自局のもの以外は null。
137
137
  *
138
138
  * 壊れたセクションは `SectionAssembler` が CRC で落としているので、ここに来るのは
139
139
  * 中身が揃っているものだけ。それでも長さの辻褄が合わないことはあるので、
@@ -149,13 +149,13 @@ export declare function parseEit(section: Uint8Array, options?: {
149
149
  * 早く揃った局でも待たされ、遅い局は取りこぼす。EIT は自分がどこまであるかを
150
150
  * セクションの中で言っているので、それを数えれば足りる。
151
151
  *
152
- * セクションは**8本ずつのセグメント**に分かれていて、セグメントの中で実際に
152
+ * セクションは**8 本ずつのセグメント**に分かれていて、セグメントの中で実際に
153
153
  * 使われている最後の番号が `segment_last_section_number`。使われていない番号は
154
154
  * 永久に来ないので、そこまで揃えばそのセグメントは終わり。
155
155
  *
156
- * **過ぎた時間帯のセグメントは流れてこない** (`stale`)。空でも先頭の1本は必ず
156
+ * **過ぎた時間帯のセグメントは流れてこない** (`stale`)。空でも先頭の 1 本は必ず
157
157
  * 来るものとして待っていた頃は、**どのチャンネルも例外なく上限まで
158
- * 開きっぱなし**になっていた (実機14チャンネル、揃って離せたのは0本)。
158
+ * 開きっぱなし**になっていた (実機 14 チャンネル、揃って離せたのは 0 本)。
159
159
  */
160
160
  export declare class ScheduleProgress {
161
161
  private readonly now;
@@ -169,11 +169,11 @@ export declare class ScheduleProgress {
169
169
  /**
170
170
  * `table_id` → バージョン。変わったらその表だけ数え直す。
171
171
  *
172
- * **バージョンは `table_id` ごとに別々に振られる。** 番組表の1つの表 (sub_table) は
172
+ * **バージョンは `table_id` ごとに別々に振られる。** 番組表の 1 つの表 (sub_table) は
173
173
  * `table_id` + 局 + TS で決まり、`version_number` はその単位で動く。
174
- * 局に1つだけ持っていた頃は、**基本 (0x50〜) と詳細 (0x58〜) を行き来する
174
+ * 局に 1 つだけ持っていた頃は、**基本 (0x50〜) と詳細 (0x58〜) を行き来する
175
175
  * たびにバージョンが違って数えたものを全部捨てて**いた。揃ったと分かることが
176
- * 二度と無いので、どのチャンネルも上限の10分 (denpa の `epgChannelTimeout`) まで開きっぱなしになる。
176
+ * 二度と無いので、どのチャンネルも上限の 10 分 (denpa の `epgChannelTimeout`) まで開きっぱなしになる。
177
177
  */
178
178
  private readonly version;
179
179
  /**
@@ -185,13 +185,13 @@ export declare class ScheduleProgress {
185
185
  /**
186
186
  * 使われている table_id を全部揃えられたか。
187
187
  *
188
- * **番号が飛ぶ。** 1つの `table_id` が受け持つのは4日ぶんで、基本は
189
- * `0x50` から、詳細は `0x58` から始まる。日本の放送は8日ぶんなので、
188
+ * **番号が飛ぶ。** 1 つの `table_id` が受け持つのは 4 日ぶんで、基本は
189
+ * `0x50` から、詳細は `0x58` から始まる。日本の放送は 8 日ぶんなので、
190
190
  * 実際に流れてくるのは `0x50` `0x51` と `0x58` `0x59` あたりだけで、
191
191
  * **`0x52`〜`0x57` は永久に来ません**。
192
192
  *
193
193
  * `0x50` から `last_table_id` まで全部を待っていた頃は、詳細を積んでいる局が
194
- * **一度も「揃った」にならず**、どのチャンネルも上限の10分 (denpa の `epgChannelTimeout`) まで開きっぱなしに
194
+ * **一度も「揃った」にならず**、どのチャンネルも上限の 10 分 (denpa の `epgChannelTimeout`) まで開きっぱなしに
195
195
  * なっていました (実機で、詳細の無い BS11 だけが早く閉じていた)。
196
196
  *
197
197
  * 見かけた表と、`last_table_id` が指す表だけを見ます。
@@ -202,9 +202,9 @@ export declare class ScheduleProgress {
202
202
  /**
203
203
  * そのセグメントの時間帯がもう過ぎているか。**過ぎたものは待たない。**
204
204
  *
205
- * セグメントは 0:00 から3時間ずつの枠で、`table_id` と節番号から
206
- * それがいつの枠なのかが決まる — 基本は `0x50` が当日 0:00 から4日ぶん、
207
- * `0x51` がその次の4日ぶん。詳細 (`0x58`〜) も同じ並びをもう一度たどる。
205
+ * セグメントは 0:00 から 3 時間ずつの枠で、`table_id` と節番号から
206
+ * それがいつの枠なのかが決まる。基本は `0x50` が当日 0:00 から 4 日ぶん、
207
+ * `0x51` がその次の 4 日ぶん。詳細 (`0x58`〜) も同じ並びをもう一度たどる。
208
208
  * 終わった枠は放送に乗らない (クラスの説明)。そのぶんの番組は、そこが未来だった数日前に取り込んである。
209
209
  */
210
210
  private stale;
@@ -212,13 +212,13 @@ export declare class ScheduleProgress {
212
212
  * 何が足りないか。**上限まで開いても揃わなかったときに出す。**
213
213
  *
214
214
  * 揃ったかどうかしか分からなかった頃は、上限まで開きっぱなしになっている局を
215
- * 見つけても**その先を追えなかった** — 電波が弱くて欠けているのか、
215
+ * 見つけても**その先を追えなかった。** 電波が弱くて欠けているのか、
216
216
  * こちらが来ない表を待っているのかで、直し方がまるで違う。
217
217
  */
218
218
  report(): string;
219
219
  }
220
220
  /**
221
- * 流れてくる TS を食べて番組を溜める。
221
+ * 流れてくる TS を読んで番組を溜める。
222
222
  *
223
223
  * 局ごとに `ScheduleProgress` を持ち、**その物理チャンネルに入っている局が
224
224
  * 全部揃ったら**読むのをやめられる。同じ番組が何度も来る (カルーセルなので) ので、
@@ -241,7 +241,7 @@ export declare class EpgReader {
241
241
  /**
242
242
  * @param now いまの時刻。局ごとの `ScheduleProgress` にそのまま渡す
243
243
  * @param options.other ほかの TS の局の番組表も読む。ネットワーク全局ぶんを
244
- * 1つの中継から先に入れるときに使う (denpa の `epg-collect.ts` の初回)
244
+ * 1 つの中継から先に入れるときに使う (denpa の `epg-collect.ts` の初回)
245
245
  * @param options.settle `other` のとき、新しい局が出てこなくなってから閉じるまで (ms)
246
246
  * @param options.expect `other` のとき、来るはずの局 (service_id)。全部見えて揃えば
247
247
  * `settle` を待たずに閉じる。受信できない局が混ざっていれば `settle` で閉じる
@@ -251,12 +251,12 @@ export declare class EpgReader {
251
251
  settle?: number;
252
252
  expect?: readonly number[];
253
253
  });
254
- /** 任意の長さのバイト列を食わせる。番組が1つでも増えたら true */
254
+ /** 任意の長さのバイト列を渡す。番組が 1 つでも増えたら true */
255
255
  feed(chunk: Uint8Array): boolean;
256
256
  /**
257
257
  * 溜めてあるものと混ぜる。**別の表で来るものを消し合わせない。**
258
258
  *
259
- * 番組表は2つの表に分かれて流れてくる。同じ event_id が両方に載っていて、
259
+ * 番組表は 2 つの表に分かれて流れてくる。同じ event_id が両方に載っていて、
260
260
  * **それぞれ自分のぶんの記述子しか持っていない**。
261
261
  *
262
262
  * - **基本** (table_id 0x50〜0x57) … タイトルと短い説明 (short_event_descriptor)
@@ -264,7 +264,7 @@ export declare class EpgReader {
264
264
  *
265
265
  * あとから来たもので丸ごと置き換えていた頃は、**詳細のほうが後に届いた番組の
266
266
  * タイトルが空になっていた**。実機では番組 23,000 件のうち 11,000 件が名無しで、
267
- * うち 2,700 件は「タイトルは無いのに番組内容だけある」状態 — 詳細に上書きされた
267
+ * うち 2,700 件は「タイトルは無いのに番組内容だけある」状態で、詳細に上書きされた
268
268
  * 跡そのもの。番組表には「(番組情報なし)」の列が並んでいた。
269
269
  *
270
270
  * **中身のあるほうを残す。** 書き換え (「[新]」が付く、誤字が直る) は
@@ -275,7 +275,7 @@ export declare class EpgReader {
275
275
  * p/f で「いま流れている」と言えるか。
276
276
  *
277
277
  * **`running_status` を当てにしきれない。** 4 (放送中) を入れてくる局も
278
- * あれば、**0 (未定義) しか入れてこない局もある** — 実機の NHK は 74 節
278
+ * あれば、**0 (未定義) しか入れてこない局もある。** 実機の NHK は 74 節
279
279
  * ぜんぶ 0 だった。4 だけを見ていると、そういう局では延長追従が丸ごと
280
280
  * 効かなくなる (denpa の docs/data.md)。
281
281
  *
@@ -294,28 +294,28 @@ export declare class EpgReader {
294
294
  requeue(events: EitEvent[]): void;
295
295
  /** 溜まった番組。開始時刻の順に並べて返す */
296
296
  all(): EitEvent[];
297
- /** 番組表を1つでも見かけた局 */
297
+ /** 番組表を 1 つでも見かけた局 */
298
298
  services(): number[];
299
299
  /**
300
300
  * 見かけた局が**全部**揃ったか。
301
301
  *
302
- * 「1局でも揃えば閉じる」にはしない。1つの物理チャンネルには複数の局が
302
+ * 「1 局でも揃えば閉じる」にはしない。1 つの物理チャンネルには複数の局が
303
303
  * 入っていて (地上波なら MX1 と MX2)、先に揃ったほうで閉じると残りが
304
304
  * 永久に埋まらない。
305
305
  */
306
306
  get complete(): boolean;
307
- /** 来るはずの局を教わっていて、それが全部見えたか */
307
+ /** 来るはずの局 (`expect`) が渡されていて、それが全部見えたか */
308
308
  private sawExpected;
309
309
  /**
310
310
  * 揃っていない局と、その理由。**上限まで開いてしまったときに出す。**
311
311
  *
312
- * 1局でも揃わなければチャンネルごと上限まで開き続けるので、
312
+ * 1 局でも揃わなければチャンネルごと上限まで開き続けるので、
313
313
  * 「どの局のせいか」が分からないと直しようがない。
314
314
  */
315
315
  shortfall(): string[];
316
316
  }
317
317
  /**
318
- * **1局の「いま」と「次」(EIT[p/f]) を追う。** ライブで番組の切り替わりを知るのに使う。
318
+ * **1 局の「いま」と「次」(EIT[p/f]) を追う。** ライブで番組の切り替わりを知るのに使う。
319
319
  *
320
320
  * 番組表 (schedule) は数日先までの予定で、**延長や繰り下げには追いつかない**
321
321
  * (局が送り直してくるのは後になってから)。p/f は放送そのものに追従していて、
@@ -324,7 +324,7 @@ export declare class EpgReader {
324
324
  * section 0 が「いま」、section 1 が「次」と決まっている (`EpgReader.onAir` と同じ)。
325
325
  *
326
326
  * **中身で比べる。** 書き換われば version が上がるはずだが、上げずに中身だけ替える
327
- * 送り手を当てにしないよう、番組の番号・時刻・尺・タイトルで比べる。p/f は1局ぶん数百バイトが
327
+ * 送り手を当てにしないよう、番組の番号・時刻・尺・タイトルで比べる。p/f は 1 局ぶん数百バイトが
328
328
  * 数秒おきに来るだけなので、毎回読んでも軽い
329
329
  */
330
330
  export declare class PresentFollowing {
@@ -341,7 +341,7 @@ export declare class PresentFollowing {
341
341
  /** 次の番組 */
342
342
  get following(): EitEvent | null;
343
343
  /**
344
- * 188 バイトのパケットを1つ。**いまか次のどちらかが変わったら true**。
344
+ * 188 バイトのパケットを 1 つ。**いまか次のどちらかが変わったら true**。
345
345
  * 最初に読めたときも true (知らなかったものが分かった)
346
346
  */
347
347
  feedPacket(packet: Uint8Array): boolean;