piixishstream 0.0.0-stage → 1.0.2

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.
Files changed (123) hide show
  1. package/README.md +124 -2
  2. package/dist/client/GatewayEvents.d.ts +30 -0
  3. package/dist/client/GatewayEvents.js +2 -0
  4. package/dist/client/GatewayEvents.js.map +1 -0
  5. package/dist/client/GatewayOpCodes.d.ts +40 -0
  6. package/dist/client/GatewayOpCodes.js +42 -0
  7. package/dist/client/GatewayOpCodes.js.map +1 -0
  8. package/dist/client/Streamer.d.ts +30 -0
  9. package/dist/client/Streamer.js +188 -0
  10. package/dist/client/Streamer.js.map +1 -0
  11. package/dist/client/index.d.ts +3 -0
  12. package/dist/client/index.js +4 -0
  13. package/dist/client/index.js.map +1 -0
  14. package/dist/client/processing/AnnexBBitstreamReaderWriter.d.ts +23 -0
  15. package/dist/client/processing/AnnexBBitstreamReaderWriter.js +149 -0
  16. package/dist/client/processing/AnnexBBitstreamReaderWriter.js.map +1 -0
  17. package/dist/client/processing/AnnexBHelper.d.ts +93 -0
  18. package/dist/client/processing/AnnexBHelper.js +127 -0
  19. package/dist/client/processing/AnnexBHelper.js.map +1 -0
  20. package/dist/client/processing/SPSVUIRewriter.d.ts +1 -0
  21. package/dist/client/processing/SPSVUIRewriter.js +297 -0
  22. package/dist/client/processing/SPSVUIRewriter.js.map +1 -0
  23. package/dist/client/voice/BaseMediaConnection.d.ts +80 -0
  24. package/dist/client/voice/BaseMediaConnection.js +552 -0
  25. package/dist/client/voice/BaseMediaConnection.js.map +1 -0
  26. package/dist/client/voice/CodecPayloadType.d.ts +59 -0
  27. package/dist/client/voice/CodecPayloadType.js +60 -0
  28. package/dist/client/voice/CodecPayloadType.js.map +1 -0
  29. package/dist/client/voice/StreamConnection.d.ts +11 -0
  30. package/dist/client/voice/StreamConnection.js +34 -0
  31. package/dist/client/voice/StreamConnection.js.map +1 -0
  32. package/dist/client/voice/VoiceConnection.d.ts +8 -0
  33. package/dist/client/voice/VoiceConnection.js +15 -0
  34. package/dist/client/voice/VoiceConnection.js.map +1 -0
  35. package/dist/client/voice/VoiceMessageTypes.d.ts +178 -0
  36. package/dist/client/voice/VoiceMessageTypes.js +2 -0
  37. package/dist/client/voice/VoiceMessageTypes.js.map +1 -0
  38. package/dist/client/voice/VoiceOpCodes.d.ts +35 -0
  39. package/dist/client/voice/VoiceOpCodes.js +38 -0
  40. package/dist/client/voice/VoiceOpCodes.js.map +1 -0
  41. package/dist/client/voice/WebRtcWrapper.d.ts +23 -0
  42. package/dist/client/voice/WebRtcWrapper.js +159 -0
  43. package/dist/client/voice/WebRtcWrapper.js.map +1 -0
  44. package/dist/client/voice/index.d.ts +4 -0
  45. package/dist/client/voice/index.js +6 -0
  46. package/dist/client/voice/index.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.js +4 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/media/AudioStream.d.ts +7 -0
  51. package/dist/media/AudioStream.js +12 -0
  52. package/dist/media/AudioStream.js.map +1 -0
  53. package/dist/media/BaseMediaStream.d.ts +31 -0
  54. package/dist/media/BaseMediaStream.js +164 -0
  55. package/dist/media/BaseMediaStream.js.map +1 -0
  56. package/dist/media/LibavCodecId.d.ts +541 -0
  57. package/dist/media/LibavCodecId.js +553 -0
  58. package/dist/media/LibavCodecId.js.map +1 -0
  59. package/dist/media/LibavDecoder.d.ts +5 -0
  60. package/dist/media/LibavDecoder.js +43 -0
  61. package/dist/media/LibavDecoder.js.map +1 -0
  62. package/dist/media/LibavDemuxer.d.ts +44 -0
  63. package/dist/media/LibavDemuxer.js +231 -0
  64. package/dist/media/LibavDemuxer.js.map +1 -0
  65. package/dist/media/VideoStream.d.ts +7 -0
  66. package/dist/media/VideoStream.js +12 -0
  67. package/dist/media/VideoStream.js.map +1 -0
  68. package/dist/media/encoders/index.d.ts +26 -0
  69. package/dist/media/encoders/index.js +12 -0
  70. package/dist/media/encoders/index.js.map +1 -0
  71. package/dist/media/encoders/merge.d.ts +3 -0
  72. package/dist/media/encoders/merge.js +10 -0
  73. package/dist/media/encoders/merge.js.map +1 -0
  74. package/dist/media/encoders/nvenc.d.ts +10 -0
  75. package/dist/media/encoders/nvenc.js +23 -0
  76. package/dist/media/encoders/nvenc.js.map +1 -0
  77. package/dist/media/encoders/software.d.ts +17 -0
  78. package/dist/media/encoders/software.js +31 -0
  79. package/dist/media/encoders/software.js.map +1 -0
  80. package/dist/media/encoders/vaapi.d.ts +6 -0
  81. package/dist/media/encoders/vaapi.js +22 -0
  82. package/dist/media/encoders/vaapi.js.map +1 -0
  83. package/dist/media/index.d.ts +4 -0
  84. package/dist/media/index.js +5 -0
  85. package/dist/media/index.js.map +1 -0
  86. package/dist/media/newApi.d.ts +130 -0
  87. package/dist/media/newApi.js +409 -0
  88. package/dist/media/newApi.js.map +1 -0
  89. package/dist/utils.d.ts +25 -0
  90. package/dist/utils.js +65 -0
  91. package/dist/utils.js.map +1 -0
  92. package/package.json +82 -5
  93. package/src/client/GatewayEvents.ts +48 -0
  94. package/src/client/GatewayOpCodes.ts +40 -0
  95. package/src/client/Streamer.ts +259 -0
  96. package/src/client/index.ts +3 -0
  97. package/src/client/processing/AnnexBBitstreamReaderWriter.ts +148 -0
  98. package/src/client/processing/AnnexBHelper.ts +134 -0
  99. package/src/client/processing/SPSVUIRewriter.ts +332 -0
  100. package/src/client/voice/BaseMediaConnection.ts +639 -0
  101. package/src/client/voice/CodecPayloadType.ts +59 -0
  102. package/src/client/voice/MediaUdp.ts.bak +171 -0
  103. package/src/client/voice/StreamConnection.ts +38 -0
  104. package/src/client/voice/VoiceConnection.ts +19 -0
  105. package/src/client/voice/VoiceMessageTypes.ts +263 -0
  106. package/src/client/voice/VoiceOpCodes.ts +36 -0
  107. package/src/client/voice/WebRtcWrapper.ts +218 -0
  108. package/src/client/voice/index.ts +5 -0
  109. package/src/index.ts +3 -0
  110. package/src/media/AudioStream.ts +18 -0
  111. package/src/media/BaseMediaStream.ts +198 -0
  112. package/src/media/LibavCodecId.ts +564 -0
  113. package/src/media/LibavDecoder.ts +47 -0
  114. package/src/media/LibavDemuxer.ts +293 -0
  115. package/src/media/VideoStream.ts +17 -0
  116. package/src/media/encoders/index.ts +27 -0
  117. package/src/media/encoders/merge.ts +14 -0
  118. package/src/media/encoders/nvenc.ts +38 -0
  119. package/src/media/encoders/software.ts +76 -0
  120. package/src/media/encoders/vaapi.ts +29 -0
  121. package/src/media/index.ts +4 -0
  122. package/src/media/newApi.ts +642 -0
  123. package/src/utils.ts +101 -0
@@ -0,0 +1,149 @@
1
+ export class AnnexBBitstreamReader {
2
+ _buffer;
3
+ _byteOffset = 0;
4
+ _bitOffset = 0;
5
+ constructor(buffer) {
6
+ this._buffer = buffer;
7
+ }
8
+ readBits(count) {
9
+ if (count === 0)
10
+ return 0;
11
+ let result = 0;
12
+ while (count > 0) {
13
+ if (this._byteOffset >= this._buffer.length)
14
+ throw new Error("Bad byte offset");
15
+ if (this._bitOffset === 0 &&
16
+ this._byteOffset >= 2 &&
17
+ this._buffer[this._byteOffset - 2] === 0 &&
18
+ this._buffer[this._byteOffset - 1] === 0 &&
19
+ this._buffer[this._byteOffset] === 3) {
20
+ // Skip over emulation prevention
21
+ this._byteOffset++;
22
+ }
23
+ if (this._bitOffset === 0 && count >= 8) {
24
+ // We're byte aligned, read whole bytes and push in
25
+ result = (result << 8) | this._buffer[this._byteOffset++];
26
+ count -= 8;
27
+ }
28
+ else {
29
+ // Read just enough to get us to the next byte
30
+ const numBitsToRead = Math.min(count, 8 - this._bitOffset);
31
+ const mask = (1 << numBitsToRead) - 1;
32
+ const newBits = (this._buffer[this._byteOffset] >>
33
+ (8 - this._bitOffset - numBitsToRead)) &
34
+ mask;
35
+ result = (result << numBitsToRead) | newBits;
36
+ count -= numBitsToRead;
37
+ this._bitOffset += numBitsToRead;
38
+ if (this._bitOffset === 8) {
39
+ this._bitOffset = 0;
40
+ this._byteOffset++;
41
+ }
42
+ }
43
+ }
44
+ return result;
45
+ }
46
+ readUnsigned(bits) {
47
+ return this.readBits(bits);
48
+ }
49
+ readSigned(bits) {
50
+ const unsigned = this.readUnsigned(bits);
51
+ if (unsigned & (1 << (bits - 1)))
52
+ return unsigned - (1 << bits);
53
+ return unsigned;
54
+ }
55
+ readUnsignedExpGolomb() {
56
+ let leading0 = 0;
57
+ while (this.readBits(1) === 0)
58
+ leading0++;
59
+ return (1 << leading0) + this.readBits(leading0) - 1;
60
+ }
61
+ readSignedExpGolomb() {
62
+ // Mapping: x <= 0 => -2x, x > 0 => 2x - 1
63
+ const unsigned = this.readUnsignedExpGolomb();
64
+ if (unsigned % 2 === 0)
65
+ return unsigned / -2;
66
+ return (unsigned + 1) / 2;
67
+ }
68
+ }
69
+ export class AnnexBBitstreamWriter {
70
+ _arr = [];
71
+ _pendingByte = 0;
72
+ _bitOffset = 0;
73
+ toBuffer() {
74
+ return Buffer.from(this._arr);
75
+ }
76
+ flush() {
77
+ // Write the pending byte into the array and reset, taking care of emulation prevention
78
+ if (this._pendingByte <= 3 &&
79
+ this._arr.at(-1) === 0 &&
80
+ this._arr.at(-2) === 0)
81
+ this._arr.push(3);
82
+ this._arr.push(this._pendingByte);
83
+ this._pendingByte = 0;
84
+ this._bitOffset = 0;
85
+ }
86
+ writeBits(bits, count) {
87
+ while (count > 0) {
88
+ if (this._bitOffset === 0) {
89
+ if (count >= 8) {
90
+ // We're byte aligned and has more than 1 byte left to write, write a whole byte
91
+ this._pendingByte = (bits >> (count - 8)) & 0xff;
92
+ count -= 8;
93
+ this.flush();
94
+ }
95
+ else {
96
+ // We have less than 1 byte, write the rest in
97
+ const mask = (1 << count) - 1;
98
+ this._pendingByte |= (bits & mask) << (8 - count);
99
+ this._bitOffset = count;
100
+ count = 0;
101
+ }
102
+ }
103
+ else {
104
+ // Write the minimum number of bits to get us byte aligned again
105
+ const numBitsToWrite = Math.min(8 - this._bitOffset, count);
106
+ const bitsToWrite = (bits >> (count - numBitsToWrite)) & ((1 << numBitsToWrite) - 1);
107
+ this._pendingByte |=
108
+ bitsToWrite << (8 - this._bitOffset - numBitsToWrite);
109
+ count -= numBitsToWrite;
110
+ this._bitOffset += numBitsToWrite;
111
+ if (this._bitOffset === 8) {
112
+ this._bitOffset = 0;
113
+ this.flush();
114
+ }
115
+ }
116
+ }
117
+ }
118
+ writeUnsigned(num, count) {
119
+ if (num < 0)
120
+ throw new Error("Expected a non-negative number");
121
+ this.writeBits(num, count);
122
+ }
123
+ writeSigned(num, count) {
124
+ if (count <= 0)
125
+ return;
126
+ if (count > 32)
127
+ throw new Error("writeSigned supports up to 32 bits");
128
+ // Build mask for `count` bits. Handle 32-bit as a special case.
129
+ const mask = count === 32 ? 0xffffffff >>> 0 : (((1 << count) >>> 0) - 1) >>> 0;
130
+ // Convert to two's-complement unsigned representation and write
131
+ const unsigned = (num & mask) >>> 0;
132
+ this.writeBits(unsigned, count);
133
+ }
134
+ writeUnsignedExpGolomb(num) {
135
+ if (num < 0)
136
+ throw new Error("Expected a non-negative number");
137
+ num++;
138
+ const bitCount = 32 - Math.clz32(num >>> 0);
139
+ this.writeBits(0, bitCount - 1);
140
+ this.writeBits(num, bitCount);
141
+ }
142
+ writeSignedExpGolomb(num) {
143
+ if (num < 0)
144
+ this.writeUnsignedExpGolomb(-2 * num);
145
+ else
146
+ this.writeUnsignedExpGolomb(2 * num - 1);
147
+ }
148
+ }
149
+ //# sourceMappingURL=AnnexBBitstreamReaderWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnexBBitstreamReaderWriter.js","sourceRoot":"","sources":["../../../src/client/processing/AnnexBBitstreamReaderWriter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IACxB,OAAO,CAAS;IAChB,WAAW,GAAG,CAAC,CAAC;IAChB,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACM,QAAQ,CAAC,KAAa;QAC3B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;gBACzC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,IACE,IAAI,CAAC,UAAU,KAAK,CAAC;gBACrB,IAAI,CAAC,WAAW,IAAI,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACpC,CAAC;gBACD,iCAAiC;gBACjC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACxC,mDAAmD;gBACnD,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1D,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,OAAO,GACX,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC7B,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC;oBACxC,IAAI,CAAC;gBACP,MAAM,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,GAAG,OAAO,CAAC;gBAC7C,KAAK,IAAI,aAAa,CAAC;gBACvB,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC;gBACjC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACM,YAAY,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACM,UAAU,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACM,qBAAqB;QAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,QAAQ,EAAE,CAAC;QAE1C,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACM,mBAAmB;QACxB,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IACxB,IAAI,GAAa,EAAE,CAAC;IACpB,YAAY,GAAG,CAAC,CAAC;IACjB,UAAU,GAAG,CAAC,CAAC;IAEhB,QAAQ;QACb,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACM,KAAK;QACV,uFAAuF;QACvF,IACE,IAAI,CAAC,YAAY,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IACM,SAAS,CAAC,IAAY,EAAE,KAAa;QAC1C,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACf,gFAAgF;oBAChF,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACjD,KAAK,IAAI,CAAC,CAAC;oBACX,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,8CAA8C;oBAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;oBAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,KAAK,GAAG,CAAC,CAAC;gBACZ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC5D,MAAM,WAAW,GACf,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,YAAY;oBACf,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC;gBACxD,KAAK,IAAI,cAAc,CAAC;gBACxB,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;gBAClC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACM,aAAa,CAAC,GAAW,EAAE,KAAa;QAC7C,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACM,WAAW,CAAC,GAAW,EAAE,KAAa;QAC3C,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO;QACvB,IAAI,KAAK,GAAG,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAEtE,gEAAgE;QAChE,MAAM,IAAI,GACR,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErE,gEAAgE;QAChE,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACM,sBAAsB,CAAC,GAAW;QACvC,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/D,GAAG,EAAE,CAAC;QACN,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IACM,oBAAoB,CAAC,GAAW;QACrC,IAAI,GAAG,GAAG,CAAC;YAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;;YAC9C,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -0,0 +1,93 @@
1
+ export declare enum H264NalUnitTypes {
2
+ Unspecified = 0,
3
+ CodedSliceNonIDR = 1,
4
+ CodedSlicePartitionA = 2,
5
+ CodedSlicePartitionB = 3,
6
+ CodedSlicePartitionC = 4,
7
+ CodedSliceIdr = 5,
8
+ SEI = 6,
9
+ SPS = 7,
10
+ PPS = 8,
11
+ AccessUnitDelimiter = 9,
12
+ EndOfSequence = 10,
13
+ EndOfStream = 11,
14
+ FillerData = 12,
15
+ SEIExtenstion = 13,
16
+ PrefixNalUnit = 14,
17
+ SubsetSPS = 15
18
+ }
19
+ export declare enum H265NalUnitTypes {
20
+ TRAIL_N = 0,
21
+ TRAIL_R = 1,
22
+ TSA_N = 2,
23
+ TSA_R = 3,
24
+ STSA_N = 4,
25
+ STSA_R = 5,
26
+ RADL_N = 6,
27
+ RADL_R = 7,
28
+ RASL_N = 8,
29
+ RASL_R = 9,
30
+ RSV_VCL_N10 = 10,
31
+ RSV_VCL_R11 = 11,
32
+ RSV_VCL_N12 = 12,
33
+ RSV_VCL_R13 = 13,
34
+ RSV_VCL_N14 = 14,
35
+ RSV_VCL_R15 = 15,
36
+ BLA_W_LP = 16,
37
+ BLA_W_RADL = 17,
38
+ BLA_N_LP = 18,
39
+ IDR_W_RADL = 19,
40
+ IDR_N_LP = 20,
41
+ CRA_NUT = 21,
42
+ RSV_IRAP_VCL22 = 22,
43
+ RSV_IRAP_VCL23 = 23,
44
+ RSV_VCL24 = 24,
45
+ RSV_VCL25 = 25,
46
+ RSV_VCL26 = 26,
47
+ RSV_VCL27 = 27,
48
+ RSV_VCL28 = 28,
49
+ RSV_VCL29 = 29,
50
+ RSV_VCL30 = 30,
51
+ RSV_VCL31 = 31,
52
+ VPS_NUT = 32,
53
+ SPS_NUT = 33,
54
+ PPS_NUT = 34,
55
+ AUD_NUT = 35,
56
+ EOS_NUT = 36,
57
+ EOB_NUT = 37,
58
+ FD_NUT = 38,
59
+ PREFIX_SEI_NUT = 39,
60
+ SUFFIX_SEI_NUT = 40,
61
+ RSV_NVCL41 = 41,
62
+ RSV_NVCL42 = 42,
63
+ RSV_NVCL43 = 43,
64
+ RSV_NVCL44 = 44,
65
+ RSV_NVCL45 = 45,
66
+ RSV_NVCL46 = 46,
67
+ RSV_NVCL47 = 47,
68
+ UNSPEC48 = 48,
69
+ UNSPEC49 = 49,
70
+ UNSPEC50 = 50,
71
+ UNSPEC51 = 51,
72
+ UNSPEC52 = 52,
73
+ UNSPEC53 = 53,
74
+ UNSPEC54 = 54,
75
+ UNSPEC55 = 55,
76
+ UNSPEC56 = 56,
77
+ UNSPEC57 = 57,
78
+ UNSPEC58 = 58,
79
+ UNSPEC59 = 59,
80
+ UNSPEC60 = 60,
81
+ UNSPEC61 = 61,
82
+ UNSPEC62 = 62,
83
+ UNSPEC63 = 63
84
+ }
85
+ export interface AnnexBHelpers {
86
+ getUnitType(frame: Buffer): number;
87
+ splitHeader(frame: Buffer): [Buffer, Buffer];
88
+ isAUD(unitType: number): boolean;
89
+ }
90
+ export declare const H264Helpers: AnnexBHelpers;
91
+ export declare const H265Helpers: AnnexBHelpers;
92
+ export declare const startCode3: Buffer<ArrayBuffer>;
93
+ export declare function splitNalu(buf: Buffer): Buffer<ArrayBufferLike>[];
@@ -0,0 +1,127 @@
1
+ export var H264NalUnitTypes;
2
+ (function (H264NalUnitTypes) {
3
+ H264NalUnitTypes[H264NalUnitTypes["Unspecified"] = 0] = "Unspecified";
4
+ H264NalUnitTypes[H264NalUnitTypes["CodedSliceNonIDR"] = 1] = "CodedSliceNonIDR";
5
+ H264NalUnitTypes[H264NalUnitTypes["CodedSlicePartitionA"] = 2] = "CodedSlicePartitionA";
6
+ H264NalUnitTypes[H264NalUnitTypes["CodedSlicePartitionB"] = 3] = "CodedSlicePartitionB";
7
+ H264NalUnitTypes[H264NalUnitTypes["CodedSlicePartitionC"] = 4] = "CodedSlicePartitionC";
8
+ H264NalUnitTypes[H264NalUnitTypes["CodedSliceIdr"] = 5] = "CodedSliceIdr";
9
+ H264NalUnitTypes[H264NalUnitTypes["SEI"] = 6] = "SEI";
10
+ H264NalUnitTypes[H264NalUnitTypes["SPS"] = 7] = "SPS";
11
+ H264NalUnitTypes[H264NalUnitTypes["PPS"] = 8] = "PPS";
12
+ H264NalUnitTypes[H264NalUnitTypes["AccessUnitDelimiter"] = 9] = "AccessUnitDelimiter";
13
+ H264NalUnitTypes[H264NalUnitTypes["EndOfSequence"] = 10] = "EndOfSequence";
14
+ H264NalUnitTypes[H264NalUnitTypes["EndOfStream"] = 11] = "EndOfStream";
15
+ H264NalUnitTypes[H264NalUnitTypes["FillerData"] = 12] = "FillerData";
16
+ H264NalUnitTypes[H264NalUnitTypes["SEIExtenstion"] = 13] = "SEIExtenstion";
17
+ H264NalUnitTypes[H264NalUnitTypes["PrefixNalUnit"] = 14] = "PrefixNalUnit";
18
+ H264NalUnitTypes[H264NalUnitTypes["SubsetSPS"] = 15] = "SubsetSPS";
19
+ })(H264NalUnitTypes || (H264NalUnitTypes = {}));
20
+ export var H265NalUnitTypes;
21
+ (function (H265NalUnitTypes) {
22
+ H265NalUnitTypes[H265NalUnitTypes["TRAIL_N"] = 0] = "TRAIL_N";
23
+ H265NalUnitTypes[H265NalUnitTypes["TRAIL_R"] = 1] = "TRAIL_R";
24
+ H265NalUnitTypes[H265NalUnitTypes["TSA_N"] = 2] = "TSA_N";
25
+ H265NalUnitTypes[H265NalUnitTypes["TSA_R"] = 3] = "TSA_R";
26
+ H265NalUnitTypes[H265NalUnitTypes["STSA_N"] = 4] = "STSA_N";
27
+ H265NalUnitTypes[H265NalUnitTypes["STSA_R"] = 5] = "STSA_R";
28
+ H265NalUnitTypes[H265NalUnitTypes["RADL_N"] = 6] = "RADL_N";
29
+ H265NalUnitTypes[H265NalUnitTypes["RADL_R"] = 7] = "RADL_R";
30
+ H265NalUnitTypes[H265NalUnitTypes["RASL_N"] = 8] = "RASL_N";
31
+ H265NalUnitTypes[H265NalUnitTypes["RASL_R"] = 9] = "RASL_R";
32
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL_N10"] = 10] = "RSV_VCL_N10";
33
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL_R11"] = 11] = "RSV_VCL_R11";
34
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL_N12"] = 12] = "RSV_VCL_N12";
35
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL_R13"] = 13] = "RSV_VCL_R13";
36
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL_N14"] = 14] = "RSV_VCL_N14";
37
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL_R15"] = 15] = "RSV_VCL_R15";
38
+ H265NalUnitTypes[H265NalUnitTypes["BLA_W_LP"] = 16] = "BLA_W_LP";
39
+ H265NalUnitTypes[H265NalUnitTypes["BLA_W_RADL"] = 17] = "BLA_W_RADL";
40
+ H265NalUnitTypes[H265NalUnitTypes["BLA_N_LP"] = 18] = "BLA_N_LP";
41
+ H265NalUnitTypes[H265NalUnitTypes["IDR_W_RADL"] = 19] = "IDR_W_RADL";
42
+ H265NalUnitTypes[H265NalUnitTypes["IDR_N_LP"] = 20] = "IDR_N_LP";
43
+ H265NalUnitTypes[H265NalUnitTypes["CRA_NUT"] = 21] = "CRA_NUT";
44
+ H265NalUnitTypes[H265NalUnitTypes["RSV_IRAP_VCL22"] = 22] = "RSV_IRAP_VCL22";
45
+ H265NalUnitTypes[H265NalUnitTypes["RSV_IRAP_VCL23"] = 23] = "RSV_IRAP_VCL23";
46
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL24"] = 24] = "RSV_VCL24";
47
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL25"] = 25] = "RSV_VCL25";
48
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL26"] = 26] = "RSV_VCL26";
49
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL27"] = 27] = "RSV_VCL27";
50
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL28"] = 28] = "RSV_VCL28";
51
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL29"] = 29] = "RSV_VCL29";
52
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL30"] = 30] = "RSV_VCL30";
53
+ H265NalUnitTypes[H265NalUnitTypes["RSV_VCL31"] = 31] = "RSV_VCL31";
54
+ H265NalUnitTypes[H265NalUnitTypes["VPS_NUT"] = 32] = "VPS_NUT";
55
+ H265NalUnitTypes[H265NalUnitTypes["SPS_NUT"] = 33] = "SPS_NUT";
56
+ H265NalUnitTypes[H265NalUnitTypes["PPS_NUT"] = 34] = "PPS_NUT";
57
+ H265NalUnitTypes[H265NalUnitTypes["AUD_NUT"] = 35] = "AUD_NUT";
58
+ H265NalUnitTypes[H265NalUnitTypes["EOS_NUT"] = 36] = "EOS_NUT";
59
+ H265NalUnitTypes[H265NalUnitTypes["EOB_NUT"] = 37] = "EOB_NUT";
60
+ H265NalUnitTypes[H265NalUnitTypes["FD_NUT"] = 38] = "FD_NUT";
61
+ H265NalUnitTypes[H265NalUnitTypes["PREFIX_SEI_NUT"] = 39] = "PREFIX_SEI_NUT";
62
+ H265NalUnitTypes[H265NalUnitTypes["SUFFIX_SEI_NUT"] = 40] = "SUFFIX_SEI_NUT";
63
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL41"] = 41] = "RSV_NVCL41";
64
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL42"] = 42] = "RSV_NVCL42";
65
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL43"] = 43] = "RSV_NVCL43";
66
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL44"] = 44] = "RSV_NVCL44";
67
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL45"] = 45] = "RSV_NVCL45";
68
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL46"] = 46] = "RSV_NVCL46";
69
+ H265NalUnitTypes[H265NalUnitTypes["RSV_NVCL47"] = 47] = "RSV_NVCL47";
70
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC48"] = 48] = "UNSPEC48";
71
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC49"] = 49] = "UNSPEC49";
72
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC50"] = 50] = "UNSPEC50";
73
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC51"] = 51] = "UNSPEC51";
74
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC52"] = 52] = "UNSPEC52";
75
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC53"] = 53] = "UNSPEC53";
76
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC54"] = 54] = "UNSPEC54";
77
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC55"] = 55] = "UNSPEC55";
78
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC56"] = 56] = "UNSPEC56";
79
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC57"] = 57] = "UNSPEC57";
80
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC58"] = 58] = "UNSPEC58";
81
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC59"] = 59] = "UNSPEC59";
82
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC60"] = 60] = "UNSPEC60";
83
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC61"] = 61] = "UNSPEC61";
84
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC62"] = 62] = "UNSPEC62";
85
+ H265NalUnitTypes[H265NalUnitTypes["UNSPEC63"] = 63] = "UNSPEC63";
86
+ })(H265NalUnitTypes || (H265NalUnitTypes = {}));
87
+ export const H264Helpers = {
88
+ getUnitType(frame) {
89
+ return frame[0] & 0x1f;
90
+ },
91
+ splitHeader(frame) {
92
+ return [frame.subarray(0, 1), frame.subarray(1)];
93
+ },
94
+ isAUD(unitType) {
95
+ return unitType === H264NalUnitTypes.AccessUnitDelimiter;
96
+ },
97
+ };
98
+ export const H265Helpers = {
99
+ getUnitType(frame) {
100
+ return (frame[0] >> 1) & 0x3f;
101
+ },
102
+ splitHeader(frame) {
103
+ return [frame.subarray(0, 2), frame.subarray(2)];
104
+ },
105
+ isAUD(unitType) {
106
+ return unitType === H265NalUnitTypes.AUD_NUT;
107
+ },
108
+ };
109
+ export const startCode3 = Buffer.from([0, 0, 1]);
110
+ export function splitNalu(buf) {
111
+ let temp = buf;
112
+ const nalus = [];
113
+ while (temp?.byteLength) {
114
+ let pos = temp.indexOf(startCode3);
115
+ let length = 3;
116
+ if (pos > 0 && temp[pos - 1] === 0) {
117
+ pos--;
118
+ length++;
119
+ }
120
+ const nalu = pos === -1 ? temp : temp.subarray(0, pos);
121
+ temp = pos === -1 ? null : temp.subarray(pos + length);
122
+ if (nalu.byteLength)
123
+ nalus.push(nalu);
124
+ }
125
+ return nalus;
126
+ }
127
+ //# sourceMappingURL=AnnexBHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnexBHelper.js","sourceRoot":"","sources":["../../../src/client/processing/AnnexBHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function rewriteSPSVUI(buffer: Buffer): Buffer<ArrayBuffer>;