@danything/arib 2.2.0 → 2.3.0
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.
- package/dist/drcs-smooth.d.ts +1 -1
- package/dist/drcs-smooth.js +1 -1
- package/dist/mmt-media.d.ts +5 -3
- package/dist/mmt-media.js +6 -3
- package/dist/mmt-service-filter.js +3 -2
- package/dist/psi.d.ts +2 -2
- package/dist/psi.js +2 -2
- package/dist/service-filter.js +7 -6
- package/dist/synth.d.ts +1 -1
- package/dist/synth.js +2 -2
- package/package.json +1 -1
package/dist/drcs-smooth.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* **字幕の外字 (DRCS) の画像を、送る前になめらかにする** ([b24caption.ts](b24caption.ts) が JSON に入れるところで使う)。
|
|
3
3
|
*
|
|
4
|
-
* 放送は置き換え表で字にできない外字を、16〜
|
|
4
|
+
* 放送は置き換え表で字にできない外字を、16〜72 画素の白黒か 4 階調・16 階調の画像で送ってくる。受け側はそれを字の枠いっぱい
|
|
5
5
|
* (1920x1080 の全画面で 72 画素ほど) に引き伸ばすので、そのまま渡すと 1 点が 4x4 の階段になり、
|
|
6
6
|
* なめらかに引き伸ばしても階段がぼやけて残る (スピーカー 🔊 の外字など)。
|
|
7
7
|
*
|
package/dist/drcs-smooth.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* **字幕の外字 (DRCS) の画像を、送る前になめらかにする** ([b24caption.ts](b24caption.ts) が JSON に入れるところで使う)。
|
|
3
3
|
*
|
|
4
|
-
* 放送は置き換え表で字にできない外字を、16〜
|
|
4
|
+
* 放送は置き換え表で字にできない外字を、16〜72 画素の白黒か 4 階調・16 階調の画像で送ってくる。受け側はそれを字の枠いっぱい
|
|
5
5
|
* (1920x1080 の全画面で 72 画素ほど) に引き伸ばすので、そのまま渡すと 1 点が 4x4 の階段になり、
|
|
6
6
|
* なめらかに引き伸ばしても階段がぼやけて残る (スピーカー 🔊 の外字など)。
|
|
7
7
|
*
|
package/dist/mmt-media.d.ts
CHANGED
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
*
|
|
21
21
|
* スクランブルされたパケットは数えて捨てる (`scrambled`)。復号はエージェントの仕事
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
import { CLOCK } from "./pes.js";
|
|
24
|
+
/** 放送の時刻の物差し (TS の PTS と同じ。`pes.ts` の `CLOCK`) */
|
|
25
|
+
export { CLOCK };
|
|
25
26
|
/** NTP の 64 ビットの時刻 (上位 32 ビットが秒、下位 32 ビットが端数) を 90 kHz に */
|
|
26
27
|
export declare function ntpToClock(data: Uint8Array, at: number): number;
|
|
27
28
|
/** MPU タイムスタンプ記述子を読む。`[mpu_sequence_number, 最初の提示時刻 (90 kHz)]` の並び */
|
|
@@ -143,6 +144,8 @@ export declare class MmtMediaReader {
|
|
|
143
144
|
private tracks;
|
|
144
145
|
/** 選んだアセットの並び (変わったかを見る) */
|
|
145
146
|
private selection;
|
|
147
|
+
/** 選んだアセットの MMTP のパケット (MPU) の数。スクランブルされていたもの (`scrambled`) も数える */
|
|
148
|
+
media: number;
|
|
146
149
|
/** スクランブルされていて読めなかった MMTP のパケットの数 */
|
|
147
150
|
scrambled: number;
|
|
148
151
|
/** 時刻が分からずに捨てたアクセスユニットの数 */
|
|
@@ -165,4 +168,3 @@ export declare class MmtMediaReader {
|
|
|
165
168
|
/** 組み立て中のアクセスユニットを閉じて返す */
|
|
166
169
|
private finish;
|
|
167
170
|
}
|
|
168
|
-
export {};
|
package/dist/mmt-media.js
CHANGED
|
@@ -24,11 +24,11 @@ import { BitReader } from "./bits.js";
|
|
|
24
24
|
import { concatBytes, u16, u32 } from "./bytes.js";
|
|
25
25
|
import { mmtDescriptors, parseMpt, TABLE_MPT } from "./mmt-si.js";
|
|
26
26
|
import { MESSAGE_PA, messageTables, parseMessage, parseMmtp, parseMpu, PAYLOAD_MPU, PAYLOAD_SIGNALING, SignalingAssembler, } from "./mmtp.js";
|
|
27
|
-
import { ADTS_RATES } from "./pes.js";
|
|
27
|
+
import { ADTS_RATES, CLOCK } from "./pes.js";
|
|
28
28
|
import { TlvIpReader } from "./tlv-ip.js";
|
|
29
29
|
import { TLV_COMPRESSED_IP, TlvStream } from "./tlv.js";
|
|
30
|
-
/** 放送の時刻の物差し (TS の PTS
|
|
31
|
-
export
|
|
30
|
+
/** 放送の時刻の物差し (TS の PTS と同じ。`pes.ts` の `CLOCK`) */
|
|
31
|
+
export { CLOCK };
|
|
32
32
|
const DESC_MPU_TIMESTAMP = 0x0001;
|
|
33
33
|
const DESC_MPU_EXTENDED_TIMESTAMP = 0x8026;
|
|
34
34
|
/** MPU のペイロードヘッダーの fragment_type。2 は MFU (中身)。0・1 はメタデータで、放送では使わない */
|
|
@@ -312,6 +312,8 @@ export class MmtMediaReader {
|
|
|
312
312
|
tracks = new Map();
|
|
313
313
|
/** 選んだアセットの並び (変わったかを見る) */
|
|
314
314
|
selection = "";
|
|
315
|
+
/** 選んだアセットの MMTP のパケット (MPU) の数。スクランブルされていたもの (`scrambled`) も数える */
|
|
316
|
+
media = 0;
|
|
315
317
|
/** スクランブルされていて読めなかった MMTP のパケットの数 */
|
|
316
318
|
scrambled = 0;
|
|
317
319
|
/** 時刻が分からずに捨てたアクセスユニットの数 */
|
|
@@ -355,6 +357,7 @@ export class MmtMediaReader {
|
|
|
355
357
|
const track = this.tracks.get(`${datagram.flow}/${mmtp.packetId}`);
|
|
356
358
|
if (track === undefined)
|
|
357
359
|
continue;
|
|
360
|
+
this.media++;
|
|
358
361
|
// パケットが欠けたら、組み立て中のアクセスユニットはもう組めない
|
|
359
362
|
if (track.sequence !== null &&
|
|
360
363
|
mmtp.sequenceNumber !== (track.sequence + 1) >>> 0) {
|
|
@@ -65,9 +65,8 @@ export class MmtServiceFilter {
|
|
|
65
65
|
if (datagram === null || mmtp === null)
|
|
66
66
|
continue;
|
|
67
67
|
const flow = this.flow(datagram.flow);
|
|
68
|
-
if (flow.foreign)
|
|
69
|
-
continue;
|
|
70
68
|
const packetId = mmtp.packetId;
|
|
69
|
+
// ほかの局だけの並びでも信号は読み続ける (後の PLT がこの局を挙げたら出し始める)。出すかは読んだあとで決める
|
|
71
70
|
if (mmtp.payloadType === PAYLOAD_SIGNALING) {
|
|
72
71
|
const before = flow.own;
|
|
73
72
|
for (const raw of this.signaling.feed(datagram.flow, mmtp))
|
|
@@ -80,6 +79,8 @@ export class MmtServiceFilter {
|
|
|
80
79
|
this.release(out);
|
|
81
80
|
continue;
|
|
82
81
|
}
|
|
82
|
+
if (flow.foreign)
|
|
83
|
+
continue;
|
|
83
84
|
if (flow.own === null)
|
|
84
85
|
this.hold(datagram.flow, packetId, packet.bytes);
|
|
85
86
|
else if (flow.own.has(packetId))
|
package/dist/psi.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ export declare function crc32(data: Uint8Array): number;
|
|
|
32
32
|
/**
|
|
33
33
|
* セクション本体に CRC32 を付けて仕上げる。`section_length` も実長に直す。
|
|
34
34
|
*
|
|
35
|
-
* **書く側が
|
|
36
|
-
* 偽の放送を組み立てる `synth.ts`。長さの直し方を間違えると読む側が黙って
|
|
35
|
+
* **書く側が 3 つある。** PAT を書き直して流す `service-filter.ts` と、
|
|
36
|
+
* 偽の放送を組み立てる `synth.ts`・`synth-mmt.ts`。長さの直し方を間違えると読む側が黙って
|
|
37
37
|
* 捨てるだけなので、1 箇所に置く。
|
|
38
38
|
*/
|
|
39
39
|
export declare function withCrc(body: number[]): Uint8Array;
|
package/dist/psi.js
CHANGED
|
@@ -66,8 +66,8 @@ export function crc32(data) {
|
|
|
66
66
|
/**
|
|
67
67
|
* セクション本体に CRC32 を付けて仕上げる。`section_length` も実長に直す。
|
|
68
68
|
*
|
|
69
|
-
* **書く側が
|
|
70
|
-
* 偽の放送を組み立てる `synth.ts`。長さの直し方を間違えると読む側が黙って
|
|
69
|
+
* **書く側が 3 つある。** PAT を書き直して流す `service-filter.ts` と、
|
|
70
|
+
* 偽の放送を組み立てる `synth.ts`・`synth-mmt.ts`。長さの直し方を間違えると読む側が黙って
|
|
71
71
|
* 捨てるだけなので、1 箇所に置く。
|
|
72
72
|
*/
|
|
73
73
|
export function withCrc(body) {
|
package/dist/service-filter.js
CHANGED
|
@@ -204,12 +204,13 @@ export class ServiceFilter {
|
|
|
204
204
|
const pmtPid = parsePat(section).get(this.serviceId);
|
|
205
205
|
if (pmtPid === undefined)
|
|
206
206
|
continue;
|
|
207
|
-
if (pmtPid
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
207
|
+
if (pmtPid !== this.pmtPid) {
|
|
208
|
+
// 選局し直した・PAT が入れ替わった。PMT も読み直す
|
|
209
|
+
this.pmtPid = pmtPid;
|
|
210
|
+
this.pmt = new SectionAssembler(pmtPid);
|
|
211
|
+
this.own.clear();
|
|
212
|
+
}
|
|
213
|
+
// PMT の PID が同じでも、バージョンと TSID は届いた PAT に合わせる
|
|
213
214
|
const version = (section[5] >> 1) & 0x1f;
|
|
214
215
|
this.rewritten = buildPat(this.tsid, version, this.serviceId, pmtPid);
|
|
215
216
|
return;
|
package/dist/synth.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* TS のセクションを組み立てる。
|
|
3
3
|
*
|
|
4
4
|
* 実チューナーが無いので、解析のテストにも偽エージェントにも「それらしい TS」が要る。
|
|
5
|
-
* 読む側 (psi.ts・eit.ts・dsmcc.ts・ait.ts、denpa の logo.ts など)
|
|
5
|
+
* 読む側 (psi.ts・eit.ts・dsmcc.ts・ait.ts、denpa の logo.ts など) と対になる書く側で、TS の PSI・SI の仕様を書き写しているのはここだけ。
|
|
6
6
|
*/
|
|
7
7
|
import { withCrc } from "./psi.js";
|
|
8
8
|
export { withCrc };
|
package/dist/synth.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* TS のセクションを組み立てる。
|
|
3
3
|
*
|
|
4
4
|
* 実チューナーが無いので、解析のテストにも偽エージェントにも「それらしい TS」が要る。
|
|
5
|
-
* 読む側 (psi.ts・eit.ts・dsmcc.ts・ait.ts、denpa の logo.ts など)
|
|
5
|
+
* 読む側 (psi.ts・eit.ts・dsmcc.ts・ait.ts、denpa の logo.ts など) と対になる書く側で、TS の PSI・SI の仕様を書き写しているのはここだけ。
|
|
6
6
|
*/
|
|
7
7
|
import { joinBytes } from "./bytes.js";
|
|
8
8
|
import { PACKET, SYNC, withCrc } from "./psi.js";
|
|
@@ -410,7 +410,7 @@ export function bxmlDescriptor(options = {}) {
|
|
|
410
410
|
const body = [
|
|
411
411
|
...be(dataComponentId),
|
|
412
412
|
// 伝送方式 00 / 入口 / 自動起動 / 解像度 0011 (960x540)
|
|
413
|
-
...(entryPoint ? [0x33, 0x70] : [0x00
|
|
413
|
+
...(entryPoint ? [0x33, 0x70] : [0x00]),
|
|
414
414
|
0xf8, // dataEventId 0xF / event_section_flag
|
|
415
415
|
0xa0, // 即時取得あり / 蓄積不可 / 起動優先
|
|
416
416
|
];
|