@luxonis/visualizer-protobuf 3.1.6 → 3.1.8
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/{deserialization.worker-BPsjKVe4.js → deserialization.worker-Bb65S7kM.js} +142 -62
- package/dist/{index-DLZ3xvY3.js → index-5P3yK0Y5.js} +1 -1
- package/dist/{index-mot3qpp9.js → index-BG23zkos.js} +1 -1
- package/dist/{index-CHlhmU5r.js → index-Bf5zVcAc.js} +1 -1
- package/dist/{index-CKfc_K3x.js → index-Bl1gi-zh.js} +1 -1
- package/dist/{index-CjcnWHBX.js → index-C1xWJh2E.js} +1 -1
- package/dist/{index-Drd3hxmz.js → index-CDlXPOVY.js} +1 -1
- package/dist/{index-DQXLqhI5.js → index-CDxyA65I.js} +1 -1
- package/dist/{index-Bcd7r8Iv.js → index-CJ4dvZSx.js} +1 -1
- package/dist/{index-DRcGifo6.js → index-Cj9IeP3v.js} +1 -1
- package/dist/{index-D-ixoHgF.js → index-CjSLV104.js} +1 -1
- package/dist/{index-1RjTt6HK.js → index-CxuRylDm.js} +2 -2
- package/dist/{index-Bi4nJb4U.js → index-D3o7BG11.js} +22 -22
- package/dist/{index-BOEXymjd.js → index-DEfpAjec.js} +1 -1
- package/dist/{index-DLW4CyCW.js → index-DM-9EFgN.js} +1 -1
- package/dist/{index-DhI-rSJS.js → index-DVZvqFFB.js} +1 -1
- package/dist/{index-Bnw5i4J9.js → index-DkB77p5v.js} +1 -1
- package/dist/{index-C5yt-flE.js → index-DlbKtmKk.js} +1 -1
- package/dist/{index-BoqJy5eD.js → index-F7xi9wdl.js} +1 -1
- package/dist/{index-DOEAktbW.js → index-K7wbxNjM.js} +1 -1
- package/dist/{index-BF6pGj6y.js → index-u97AsRd9.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/src/messaging/deserialization/video/h264.d.ts +7 -0
- package/dist/lib/src/messaging/deserialization/video/h264.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/h264.js +67 -30
- package/dist/lib/src/messaging/deserialization/video/h264.js.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/h265.d.ts +7 -0
- package/dist/lib/src/messaging/deserialization/video/h265.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/h265.js +63 -26
- package/dist/lib/src/messaging/deserialization/video/h265.js.map +1 -1
- package/package.json +1 -1
|
@@ -823,14 +823,56 @@ function closeDecoder$1(decoder) {
|
|
|
823
823
|
}
|
|
824
824
|
function closeTopicDecoder$1(topic, topicDecoders) {
|
|
825
825
|
const decoderInfo = topicDecoders.get(topic);
|
|
826
|
+
topicDecoders.delete(topic);
|
|
826
827
|
closeDecoder$1(decoderInfo === null || decoderInfo === void 0 ? void 0 : decoderInfo.decoder);
|
|
827
828
|
decoderInfo === null || decoderInfo === void 0 || decoderInfo.timing.clear();
|
|
828
829
|
decoderInfo === null || decoderInfo === void 0 || decoderInfo.transformations.clear();
|
|
830
|
+
if (decoderInfo) {
|
|
831
|
+
decoderInfo.pendingFrame = undefined;
|
|
832
|
+
}
|
|
829
833
|
}
|
|
830
834
|
function isIgnorableInitialDecodeError(error) {
|
|
831
835
|
const message = error instanceof Error ? error.message : String(error);
|
|
832
836
|
return message.includes("A key frame is required after configure() or flush()");
|
|
833
837
|
}
|
|
838
|
+
function decodePendingFrame$1(topic, topicDecoders, onError) {
|
|
839
|
+
const decoderInfo = topicDecoders.get(topic);
|
|
840
|
+
if (!decoderInfo) {
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
843
|
+
const decoder = decoderInfo.decoder;
|
|
844
|
+
if (decoder.state === "closed" || decoder.decodeQueueSize > 0) {
|
|
845
|
+
return;
|
|
846
|
+
}
|
|
847
|
+
const pendingFrame = decoderInfo.pendingFrame;
|
|
848
|
+
if (!pendingFrame) {
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
decoderInfo.pendingFrame = undefined;
|
|
852
|
+
decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
|
|
853
|
+
decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
|
|
854
|
+
try {
|
|
855
|
+
var _topicDecoders$get;
|
|
856
|
+
ensureDecoderConfigured$1(decoder);
|
|
857
|
+
if (decoder.state !== "configured" || ((_topicDecoders$get = topicDecoders.get(topic)) === null || _topicDecoders$get === void 0 ? void 0 : _topicDecoders$get.decoder) !== decoder) {
|
|
858
|
+
closeTopicDecoder$1(topic, topicDecoders);
|
|
859
|
+
return;
|
|
860
|
+
}
|
|
861
|
+
const chunk = new EncodedVideoChunk({
|
|
862
|
+
type: "key",
|
|
863
|
+
data: pendingFrame.data,
|
|
864
|
+
timestamp: pendingFrame.timestamp
|
|
865
|
+
});
|
|
866
|
+
decoder.decode(chunk);
|
|
867
|
+
} catch (error) {
|
|
868
|
+
if (isIgnorableInitialDecodeError(error)) {
|
|
869
|
+
closeTopicDecoder$1(topic, topicDecoders);
|
|
870
|
+
return;
|
|
871
|
+
}
|
|
872
|
+
closeTopicDecoder$1(topic, topicDecoders);
|
|
873
|
+
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
|
|
874
|
+
}
|
|
875
|
+
}
|
|
834
876
|
function packedToI420(packed, width, height, stride, format, cropLeft = 0, cropTop = 0) {
|
|
835
877
|
if ((width & 1) !== 0 || (height & 1) !== 0) {
|
|
836
878
|
throw new Error("I420 requires even width and height.");
|
|
@@ -943,9 +985,14 @@ function createVideoDecoder$1({
|
|
|
943
985
|
onError
|
|
944
986
|
}) {
|
|
945
987
|
let hasProducedFrame = false;
|
|
946
|
-
|
|
988
|
+
let decoder;
|
|
989
|
+
decoder = new VideoDecoder({
|
|
947
990
|
output: async frame => {
|
|
948
|
-
var _visibleRect$width, _visibleRect$height, _visibleRect$x, _visibleRect$y, _topicDecoders$get$ti, _topicDecoders$
|
|
991
|
+
var _topicDecoders$get2, _visibleRect$width, _visibleRect$height, _visibleRect$x, _visibleRect$y, _topicDecoders$get$ti, _topicDecoders$get3, _topicDecoders$get4, _topicDecoders$get5, _topicDecoders$get6, _topicDecoders$get7;
|
|
992
|
+
if (((_topicDecoders$get2 = topicDecoders.get(topic)) === null || _topicDecoders$get2 === void 0 ? void 0 : _topicDecoders$get2.decoder) !== decoder) {
|
|
993
|
+
frame.close();
|
|
994
|
+
return;
|
|
995
|
+
}
|
|
949
996
|
hasProducedFrame = true;
|
|
950
997
|
const visibleRect = frame.visibleRect;
|
|
951
998
|
const frameWidth = (_visibleRect$width = visibleRect === null || visibleRect === void 0 ? void 0 : visibleRect.width) !== null && _visibleRect$width !== void 0 ? _visibleRect$width : frame.codedWidth;
|
|
@@ -988,9 +1035,10 @@ function createVideoDecoder$1({
|
|
|
988
1035
|
if (frame.format !== "I420" && frame.format !== "NV12" && frame.format !== "RGBX" && frame.format !== "RGBA" && frame.format !== "BGRX" && frame.format !== "BGRA") {
|
|
989
1036
|
logger$2.warn("H264 decoder received unexpected frame format:", frame.format);
|
|
990
1037
|
}
|
|
991
|
-
const receiveTime = (_topicDecoders$get$ti = (_topicDecoders$
|
|
992
|
-
|
|
993
|
-
(_topicDecoders$
|
|
1038
|
+
const receiveTime = (_topicDecoders$get$ti = (_topicDecoders$get3 = topicDecoders.get(topic)) === null || _topicDecoders$get3 === void 0 ? void 0 : _topicDecoders$get3.timing.get(frame.timestamp)) !== null && _topicDecoders$get$ti !== void 0 ? _topicDecoders$get$ti : dist.fromMicros(frame.timestamp);
|
|
1039
|
+
(_topicDecoders$get4 = topicDecoders.get(topic)) === null || _topicDecoders$get4 === void 0 || _topicDecoders$get4.timing.delete(frame.timestamp);
|
|
1040
|
+
const transformation = (_topicDecoders$get5 = topicDecoders.get(topic)) === null || _topicDecoders$get5 === void 0 ? void 0 : _topicDecoders$get5.transformations.get(frame.timestamp);
|
|
1041
|
+
(_topicDecoders$get6 = topicDecoders.get(topic)) === null || _topicDecoders$get6 === void 0 || _topicDecoders$get6.transformations.delete(frame.timestamp);
|
|
994
1042
|
const foxgloveMessage = {
|
|
995
1043
|
timestamp: receiveTime,
|
|
996
1044
|
frame_id: `h264-${topic}-frame`,
|
|
@@ -1009,8 +1057,15 @@ function createVideoDecoder$1({
|
|
|
1009
1057
|
depthaiTransformation: transformation
|
|
1010
1058
|
});
|
|
1011
1059
|
frame.close();
|
|
1060
|
+
if (((_topicDecoders$get7 = topicDecoders.get(topic)) === null || _topicDecoders$get7 === void 0 ? void 0 : _topicDecoders$get7.decoder) === decoder) {
|
|
1061
|
+
decodePendingFrame$1(topic, topicDecoders, onError);
|
|
1062
|
+
}
|
|
1012
1063
|
},
|
|
1013
1064
|
error: error => {
|
|
1065
|
+
var _topicDecoders$get8;
|
|
1066
|
+
if (((_topicDecoders$get8 = topicDecoders.get(topic)) === null || _topicDecoders$get8 === void 0 ? void 0 : _topicDecoders$get8.decoder) !== decoder) {
|
|
1067
|
+
return;
|
|
1068
|
+
}
|
|
1014
1069
|
if (!hasProducedFrame && isIgnorableInitialDecodeError(error)) {
|
|
1015
1070
|
logger$2.warn(`Ignoring initial H264 decoder error for topic ${topic}: ${error.message}`);
|
|
1016
1071
|
closeTopicDecoder$1(topic, topicDecoders);
|
|
@@ -1021,6 +1076,7 @@ function createVideoDecoder$1({
|
|
|
1021
1076
|
onError(new DecoderRuntimeError(topic, error.message));
|
|
1022
1077
|
}
|
|
1023
1078
|
});
|
|
1079
|
+
return decoder;
|
|
1024
1080
|
}
|
|
1025
1081
|
async function deserializeEncodedFrameH264({
|
|
1026
1082
|
topic,
|
|
@@ -1055,11 +1111,13 @@ async function deserializeEncodedFrameH264({
|
|
|
1055
1111
|
existingDecoderInfo.decoder = decoder;
|
|
1056
1112
|
existingDecoderInfo.timing.clear();
|
|
1057
1113
|
existingDecoderInfo.transformations.clear();
|
|
1114
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
1058
1115
|
} else {
|
|
1059
1116
|
topicDecoders.set(topic, {
|
|
1060
1117
|
decoder,
|
|
1061
1118
|
timing: new Map(),
|
|
1062
|
-
transformations: new Map()
|
|
1119
|
+
transformations: new Map(),
|
|
1120
|
+
pendingFrame: undefined
|
|
1063
1121
|
});
|
|
1064
1122
|
}
|
|
1065
1123
|
} else if (existingDecoderInfo.decoder.state === "unconfigured") {
|
|
@@ -1067,6 +1125,7 @@ async function deserializeEncodedFrameH264({
|
|
|
1067
1125
|
ensureDecoderConfigured$1(existingDecoderInfo.decoder);
|
|
1068
1126
|
existingDecoderInfo.timing.clear();
|
|
1069
1127
|
existingDecoderInfo.transformations.clear();
|
|
1128
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
1070
1129
|
} catch (error) {
|
|
1071
1130
|
closeTopicDecoder$1(topic, topicDecoders);
|
|
1072
1131
|
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.264 decoder."));
|
|
@@ -1077,38 +1136,19 @@ async function deserializeEncodedFrameH264({
|
|
|
1077
1136
|
if (!decoderInfo) {
|
|
1078
1137
|
return;
|
|
1079
1138
|
}
|
|
1080
|
-
if (decoderInfo.decoder.decodeQueueSize > 60) {
|
|
1081
|
-
decoderInfo.decoder.reset();
|
|
1082
|
-
try {
|
|
1083
|
-
ensureDecoderConfigured$1(decoderInfo.decoder);
|
|
1084
|
-
} catch (error) {
|
|
1085
|
-
closeTopicDecoder$1(topic, topicDecoders);
|
|
1086
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.264 decoder after reset."));
|
|
1087
|
-
}
|
|
1088
|
-
decoderInfo.timing.clear();
|
|
1089
|
-
decoderInfo.transformations.clear();
|
|
1090
|
-
return;
|
|
1091
|
-
}
|
|
1092
1139
|
const microTimestamp = receiveTime.sec * 1000000 + Math.floor(receiveTime.nsec / 1000);
|
|
1093
|
-
decoderInfo.timing.set(microTimestamp, receiveTime);
|
|
1094
|
-
decoderInfo.transformations.set(microTimestamp, message.transformation);
|
|
1095
1140
|
const frame = {
|
|
1096
|
-
type: 'key',
|
|
1097
1141
|
data: message.data,
|
|
1098
|
-
timestamp: microTimestamp
|
|
1142
|
+
timestamp: microTimestamp,
|
|
1143
|
+
receiveTime,
|
|
1144
|
+
transformation: message.transformation
|
|
1099
1145
|
};
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
decoderInfo.decoder.decode(chunk);
|
|
1104
|
-
} catch (error) {
|
|
1105
|
-
if (isIgnorableInitialDecodeError(error)) {
|
|
1106
|
-
closeTopicDecoder$1(topic, topicDecoders);
|
|
1107
|
-
return;
|
|
1108
|
-
}
|
|
1109
|
-
closeTopicDecoder$1(topic, topicDecoders);
|
|
1110
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
|
|
1146
|
+
if (decoderInfo.decoder.decodeQueueSize > 0) {
|
|
1147
|
+
decoderInfo.pendingFrame = frame;
|
|
1148
|
+
return;
|
|
1111
1149
|
}
|
|
1150
|
+
decoderInfo.pendingFrame = frame;
|
|
1151
|
+
decodePendingFrame$1(topic, topicDecoders, onError);
|
|
1112
1152
|
}
|
|
1113
1153
|
|
|
1114
1154
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
@@ -1142,9 +1182,47 @@ function closeDecoder(decoder) {
|
|
|
1142
1182
|
}
|
|
1143
1183
|
function closeTopicDecoder(topic, topicDecoders) {
|
|
1144
1184
|
const decoderInfo = topicDecoders.get(topic);
|
|
1185
|
+
topicDecoders.delete(topic);
|
|
1145
1186
|
closeDecoder(decoderInfo === null || decoderInfo === void 0 ? void 0 : decoderInfo.decoder);
|
|
1146
1187
|
decoderInfo === null || decoderInfo === void 0 || decoderInfo.timing.clear();
|
|
1147
1188
|
decoderInfo === null || decoderInfo === void 0 || decoderInfo.transformations.clear();
|
|
1189
|
+
if (decoderInfo) {
|
|
1190
|
+
decoderInfo.pendingFrame = undefined;
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
function decodePendingFrame(topic, topicDecoders, onError) {
|
|
1194
|
+
const decoderInfo = topicDecoders.get(topic);
|
|
1195
|
+
if (!decoderInfo) {
|
|
1196
|
+
return;
|
|
1197
|
+
}
|
|
1198
|
+
const decoder = decoderInfo.decoder;
|
|
1199
|
+
if (decoder.state === "closed" || decoder.decodeQueueSize > 0) {
|
|
1200
|
+
return;
|
|
1201
|
+
}
|
|
1202
|
+
const pendingFrame = decoderInfo.pendingFrame;
|
|
1203
|
+
if (!pendingFrame) {
|
|
1204
|
+
return;
|
|
1205
|
+
}
|
|
1206
|
+
decoderInfo.pendingFrame = undefined;
|
|
1207
|
+
decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
|
|
1208
|
+
decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
|
|
1209
|
+
try {
|
|
1210
|
+
var _topicDecoders$get;
|
|
1211
|
+
ensureDecoderConfigured(decoder);
|
|
1212
|
+
if (decoder.state !== "configured" || ((_topicDecoders$get = topicDecoders.get(topic)) === null || _topicDecoders$get === void 0 ? void 0 : _topicDecoders$get.decoder) !== decoder) {
|
|
1213
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
1214
|
+
return;
|
|
1215
|
+
}
|
|
1216
|
+
const chunk = new EncodedVideoChunk({
|
|
1217
|
+
type: "key",
|
|
1218
|
+
data: pendingFrame.data,
|
|
1219
|
+
timestamp: pendingFrame.timestamp
|
|
1220
|
+
});
|
|
1221
|
+
decoder.decode(chunk);
|
|
1222
|
+
} catch (error) {
|
|
1223
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
1224
|
+
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
|
|
1225
|
+
}
|
|
1148
1226
|
}
|
|
1149
1227
|
function createVideoDecoder({
|
|
1150
1228
|
topic,
|
|
@@ -1152,14 +1230,20 @@ function createVideoDecoder({
|
|
|
1152
1230
|
topicDecoders,
|
|
1153
1231
|
onError
|
|
1154
1232
|
}) {
|
|
1155
|
-
|
|
1233
|
+
let decoder;
|
|
1234
|
+
decoder = new VideoDecoder({
|
|
1156
1235
|
output: async frame => {
|
|
1157
|
-
var _topicDecoders$get$ti, _topicDecoders$
|
|
1236
|
+
var _topicDecoders$get2, _topicDecoders$get$ti, _topicDecoders$get3, _topicDecoders$get4, _topicDecoders$get5, _topicDecoders$get6, _topicDecoders$get7;
|
|
1237
|
+
if (((_topicDecoders$get2 = topicDecoders.get(topic)) === null || _topicDecoders$get2 === void 0 ? void 0 : _topicDecoders$get2.decoder) !== decoder) {
|
|
1238
|
+
frame.close();
|
|
1239
|
+
return;
|
|
1240
|
+
}
|
|
1158
1241
|
const buffer = new Uint8Array(frame.allocationSize());
|
|
1159
1242
|
await frame.copyTo(buffer);
|
|
1160
|
-
const receiveTime = (_topicDecoders$get$ti = (_topicDecoders$
|
|
1161
|
-
|
|
1162
|
-
(_topicDecoders$
|
|
1243
|
+
const receiveTime = (_topicDecoders$get$ti = (_topicDecoders$get3 = topicDecoders.get(topic)) === null || _topicDecoders$get3 === void 0 ? void 0 : _topicDecoders$get3.timing.get(frame.timestamp)) !== null && _topicDecoders$get$ti !== void 0 ? _topicDecoders$get$ti : dist.fromMicros(frame.timestamp);
|
|
1244
|
+
(_topicDecoders$get4 = topicDecoders.get(topic)) === null || _topicDecoders$get4 === void 0 || _topicDecoders$get4.timing.delete(frame.timestamp);
|
|
1245
|
+
const transformation = (_topicDecoders$get5 = topicDecoders.get(topic)) === null || _topicDecoders$get5 === void 0 ? void 0 : _topicDecoders$get5.transformations.get(frame.timestamp);
|
|
1246
|
+
(_topicDecoders$get6 = topicDecoders.get(topic)) === null || _topicDecoders$get6 === void 0 || _topicDecoders$get6.transformations.delete(frame.timestamp);
|
|
1163
1247
|
const [encoding, step] = parsePixelFormat(frame.format);
|
|
1164
1248
|
const foxgloveMessage = {
|
|
1165
1249
|
timestamp: receiveTime,
|
|
@@ -1179,13 +1263,21 @@ function createVideoDecoder({
|
|
|
1179
1263
|
depthaiTransformation: transformation
|
|
1180
1264
|
});
|
|
1181
1265
|
frame.close();
|
|
1266
|
+
if (((_topicDecoders$get7 = topicDecoders.get(topic)) === null || _topicDecoders$get7 === void 0 ? void 0 : _topicDecoders$get7.decoder) === decoder) {
|
|
1267
|
+
decodePendingFrame(topic, topicDecoders, onError);
|
|
1268
|
+
}
|
|
1182
1269
|
},
|
|
1183
1270
|
error: error => {
|
|
1271
|
+
var _topicDecoders$get8;
|
|
1272
|
+
if (((_topicDecoders$get8 = topicDecoders.get(topic)) === null || _topicDecoders$get8 === void 0 ? void 0 : _topicDecoders$get8.decoder) !== decoder) {
|
|
1273
|
+
return;
|
|
1274
|
+
}
|
|
1184
1275
|
logger$1.error(error);
|
|
1185
1276
|
closeTopicDecoder(topic, topicDecoders);
|
|
1186
1277
|
onError(new DecoderRuntimeError(topic, error.message));
|
|
1187
1278
|
}
|
|
1188
1279
|
});
|
|
1280
|
+
return decoder;
|
|
1189
1281
|
}
|
|
1190
1282
|
async function deserializeEncodedFrameH265({
|
|
1191
1283
|
topic,
|
|
@@ -1220,11 +1312,13 @@ async function deserializeEncodedFrameH265({
|
|
|
1220
1312
|
existingDecoderInfo.decoder = decoder;
|
|
1221
1313
|
existingDecoderInfo.timing.clear();
|
|
1222
1314
|
existingDecoderInfo.transformations.clear();
|
|
1315
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
1223
1316
|
} else {
|
|
1224
1317
|
topicDecoders.set(topic, {
|
|
1225
1318
|
decoder,
|
|
1226
1319
|
timing: new Map(),
|
|
1227
|
-
transformations: new Map()
|
|
1320
|
+
transformations: new Map(),
|
|
1321
|
+
pendingFrame: undefined
|
|
1228
1322
|
});
|
|
1229
1323
|
}
|
|
1230
1324
|
} else if (existingDecoderInfo.decoder.state === "unconfigured") {
|
|
@@ -1232,6 +1326,7 @@ async function deserializeEncodedFrameH265({
|
|
|
1232
1326
|
ensureDecoderConfigured(existingDecoderInfo.decoder);
|
|
1233
1327
|
existingDecoderInfo.timing.clear();
|
|
1234
1328
|
existingDecoderInfo.transformations.clear();
|
|
1329
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
1235
1330
|
} catch (error) {
|
|
1236
1331
|
closeTopicDecoder(topic, topicDecoders);
|
|
1237
1332
|
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.265 decoder."));
|
|
@@ -1242,34 +1337,19 @@ async function deserializeEncodedFrameH265({
|
|
|
1242
1337
|
if (!decoderInfo) {
|
|
1243
1338
|
return;
|
|
1244
1339
|
}
|
|
1245
|
-
if (decoderInfo.decoder.decodeQueueSize > 60) {
|
|
1246
|
-
decoderInfo.decoder.reset();
|
|
1247
|
-
try {
|
|
1248
|
-
ensureDecoderConfigured(decoderInfo.decoder);
|
|
1249
|
-
} catch (error) {
|
|
1250
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
1251
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.265 decoder after reset."));
|
|
1252
|
-
}
|
|
1253
|
-
decoderInfo.timing.clear();
|
|
1254
|
-
decoderInfo.transformations.clear();
|
|
1255
|
-
return;
|
|
1256
|
-
}
|
|
1257
1340
|
const microTimestamp = receiveTime.sec * 1000000 + Math.floor(receiveTime.nsec / 1000);
|
|
1258
|
-
decoderInfo.timing.set(microTimestamp, receiveTime);
|
|
1259
|
-
decoderInfo.transformations.set(microTimestamp, message.transformation);
|
|
1260
1341
|
const frame = {
|
|
1261
|
-
type: 'key',
|
|
1262
1342
|
data: message.data,
|
|
1263
|
-
timestamp: microTimestamp
|
|
1343
|
+
timestamp: microTimestamp,
|
|
1344
|
+
receiveTime,
|
|
1345
|
+
transformation: message.transformation
|
|
1264
1346
|
};
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
decoderInfo.decoder.decode(chunk);
|
|
1269
|
-
} catch (error) {
|
|
1270
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
1271
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
|
|
1347
|
+
if (decoderInfo.decoder.decodeQueueSize > 0) {
|
|
1348
|
+
decoderInfo.pendingFrame = frame;
|
|
1349
|
+
return;
|
|
1272
1350
|
}
|
|
1351
|
+
decoderInfo.pendingFrame = frame;
|
|
1352
|
+
decodePendingFrame(topic, topicDecoders, onError);
|
|
1273
1353
|
}
|
|
1274
1354
|
|
|
1275
1355
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, ad as parseMixed } from './index-
|
|
2
|
+
import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, ad as parseMixed } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-
|
|
2
|
+
import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-
|
|
2
|
+
import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { U as styleTags, V as tags, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, ae as defineCSSCompletionSource, X as LanguageSupport, Z as LRParser, Y as ExternalTokenizer } from './index-
|
|
2
|
+
import { U as styleTags, V as tags, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, ae as defineCSSCompletionSource, X as LanguageSupport, Z as LRParser, Y as ExternalTokenizer } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { U as styleTags, V as tags, ag as javascriptLanguage, W as LRLanguage, X as LanguageSupport, Z as LRParser, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-
|
|
2
|
+
import { U as styleTags, V as tags, ag as javascriptLanguage, W as LRLanguage, X as LanguageSupport, Z as LRParser, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-
|
|
2
|
+
import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, ac as html, X as LanguageSupport, ad as parseMixed } from './index-
|
|
2
|
+
import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, ac as html, X as LanguageSupport, ad as parseMixed } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-
|
|
2
|
+
import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-
|
|
2
|
+
import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-
|
|
2
|
+
import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { ImagePanel } from './index-
|
|
2
|
+
import { ImagePanel } from './index-u97AsRd9.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'react-dom/client';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -10,7 +10,7 @@ import 'zustand';
|
|
|
10
10
|
import 'react-mosaic-component';
|
|
11
11
|
import '@mui/material';
|
|
12
12
|
import './isArrayLikeObject-n9ytTioB.js';
|
|
13
|
-
import './index-
|
|
13
|
+
import './index-D3o7BG11.js';
|
|
14
14
|
import './utils-DmlHZWuo.js';
|
|
15
15
|
import './FoxgloveServer-B98MHUu6.js';
|
|
16
16
|
import 'ms';
|
|
@@ -975,7 +975,7 @@ ConfigStore.instance = void 0;
|
|
|
975
975
|
|
|
976
976
|
var _localStorage$getItem;
|
|
977
977
|
function initWorker(callback) {
|
|
978
|
-
const worker = new Worker(new URL("deserialization.worker-
|
|
978
|
+
const worker = new Worker(new URL("deserialization.worker-Bb65S7kM.js", import.meta.url), {
|
|
979
979
|
type: "module",
|
|
980
980
|
name: `message-decoder`
|
|
981
981
|
});
|
|
@@ -88702,7 +88702,7 @@ function legacy(parser) {
|
|
|
88702
88702
|
return new LanguageSupport(StreamLanguage.define(parser));
|
|
88703
88703
|
}
|
|
88704
88704
|
function sql$1(dialectName) {
|
|
88705
|
-
return import('./index-
|
|
88705
|
+
return import('./index-K7wbxNjM.js').then(m => m.sql({ dialect: m[dialectName] }));
|
|
88706
88706
|
}
|
|
88707
88707
|
/**
|
|
88708
88708
|
An array of language descriptions for known language packages.
|
|
@@ -88713,7 +88713,7 @@ const languages = [
|
|
|
88713
88713
|
name: "C",
|
|
88714
88714
|
extensions: ["c", "h", "ino"],
|
|
88715
88715
|
load() {
|
|
88716
|
-
return import('./index-
|
|
88716
|
+
return import('./index-BG23zkos.js').then(m => m.cpp());
|
|
88717
88717
|
}
|
|
88718
88718
|
}),
|
|
88719
88719
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88721,7 +88721,7 @@ const languages = [
|
|
|
88721
88721
|
alias: ["cpp"],
|
|
88722
88722
|
extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
|
|
88723
88723
|
load() {
|
|
88724
|
-
return import('./index-
|
|
88724
|
+
return import('./index-BG23zkos.js').then(m => m.cpp());
|
|
88725
88725
|
}
|
|
88726
88726
|
}),
|
|
88727
88727
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88741,7 +88741,7 @@ const languages = [
|
|
|
88741
88741
|
name: "Go",
|
|
88742
88742
|
extensions: ["go"],
|
|
88743
88743
|
load() {
|
|
88744
|
-
return import('./index-
|
|
88744
|
+
return import('./index-DVZvqFFB.js').then(m => m.go());
|
|
88745
88745
|
}
|
|
88746
88746
|
}),
|
|
88747
88747
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88756,7 +88756,7 @@ const languages = [
|
|
|
88756
88756
|
name: "Java",
|
|
88757
88757
|
extensions: ["java"],
|
|
88758
88758
|
load() {
|
|
88759
|
-
return import('./index-
|
|
88759
|
+
return import('./index-Bf5zVcAc.js').then(m => m.java());
|
|
88760
88760
|
}
|
|
88761
88761
|
}),
|
|
88762
88762
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88771,7 +88771,7 @@ const languages = [
|
|
|
88771
88771
|
name: "Jinja",
|
|
88772
88772
|
extensions: ["j2", "jinja", "jinja2"],
|
|
88773
88773
|
load() {
|
|
88774
|
-
return import('./index-
|
|
88774
|
+
return import('./index-Cj9IeP3v.js').then(m => m.jinja());
|
|
88775
88775
|
}
|
|
88776
88776
|
}),
|
|
88777
88777
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88779,7 +88779,7 @@ const languages = [
|
|
|
88779
88779
|
alias: ["json5"],
|
|
88780
88780
|
extensions: ["json", "map"],
|
|
88781
88781
|
load() {
|
|
88782
|
-
return import('./index-
|
|
88782
|
+
return import('./index-CJ4dvZSx.js').then(m => m.json());
|
|
88783
88783
|
}
|
|
88784
88784
|
}),
|
|
88785
88785
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88793,14 +88793,14 @@ const languages = [
|
|
|
88793
88793
|
name: "LESS",
|
|
88794
88794
|
extensions: ["less"],
|
|
88795
88795
|
load() {
|
|
88796
|
-
return import('./index-
|
|
88796
|
+
return import('./index-Bl1gi-zh.js').then(m => m.less());
|
|
88797
88797
|
}
|
|
88798
88798
|
}),
|
|
88799
88799
|
/*@__PURE__*/LanguageDescription.of({
|
|
88800
88800
|
name: "Liquid",
|
|
88801
88801
|
extensions: ["liquid"],
|
|
88802
88802
|
load() {
|
|
88803
|
-
return import('./index-
|
|
88803
|
+
return import('./index-CjSLV104.js').then(m => m.liquid());
|
|
88804
88804
|
}
|
|
88805
88805
|
}),
|
|
88806
88806
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88826,7 +88826,7 @@ const languages = [
|
|
|
88826
88826
|
name: "PHP",
|
|
88827
88827
|
extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
|
|
88828
88828
|
load() {
|
|
88829
|
-
return import('./index-
|
|
88829
|
+
return import('./index-CDxyA65I.js').then(m => m.php());
|
|
88830
88830
|
}
|
|
88831
88831
|
}),
|
|
88832
88832
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88843,28 +88843,28 @@ const languages = [
|
|
|
88843
88843
|
extensions: ["BUILD", "bzl", "py", "pyw"],
|
|
88844
88844
|
filename: /^(BUCK|BUILD)$/,
|
|
88845
88845
|
load() {
|
|
88846
|
-
return import('./index-
|
|
88846
|
+
return import('./index-DEfpAjec.js').then(m => m.python());
|
|
88847
88847
|
}
|
|
88848
88848
|
}),
|
|
88849
88849
|
/*@__PURE__*/LanguageDescription.of({
|
|
88850
88850
|
name: "Rust",
|
|
88851
88851
|
extensions: ["rs"],
|
|
88852
88852
|
load() {
|
|
88853
|
-
return import('./index-
|
|
88853
|
+
return import('./index-CDlXPOVY.js').then(m => m.rust());
|
|
88854
88854
|
}
|
|
88855
88855
|
}),
|
|
88856
88856
|
/*@__PURE__*/LanguageDescription.of({
|
|
88857
88857
|
name: "Sass",
|
|
88858
88858
|
extensions: ["sass"],
|
|
88859
88859
|
load() {
|
|
88860
|
-
return import('./index-
|
|
88860
|
+
return import('./index-DkB77p5v.js').then(m => m.sass({ indented: true }));
|
|
88861
88861
|
}
|
|
88862
88862
|
}),
|
|
88863
88863
|
/*@__PURE__*/LanguageDescription.of({
|
|
88864
88864
|
name: "SCSS",
|
|
88865
88865
|
extensions: ["scss"],
|
|
88866
88866
|
load() {
|
|
88867
|
-
return import('./index-
|
|
88867
|
+
return import('./index-DkB77p5v.js').then(m => m.sass());
|
|
88868
88868
|
}
|
|
88869
88869
|
}),
|
|
88870
88870
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88895,7 +88895,7 @@ const languages = [
|
|
|
88895
88895
|
name: "WebAssembly",
|
|
88896
88896
|
extensions: ["wat", "wast"],
|
|
88897
88897
|
load() {
|
|
88898
|
-
return import('./index-
|
|
88898
|
+
return import('./index-DlbKtmKk.js').then(m => m.wast());
|
|
88899
88899
|
}
|
|
88900
88900
|
}),
|
|
88901
88901
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88903,7 +88903,7 @@ const languages = [
|
|
|
88903
88903
|
alias: ["rss", "wsdl", "xsd"],
|
|
88904
88904
|
extensions: ["xml", "xsl", "xsd", "svg"],
|
|
88905
88905
|
load() {
|
|
88906
|
-
return import('./index-
|
|
88906
|
+
return import('./index-DM-9EFgN.js').then(m => m.xml());
|
|
88907
88907
|
}
|
|
88908
88908
|
}),
|
|
88909
88909
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -88911,7 +88911,7 @@ const languages = [
|
|
|
88911
88911
|
alias: ["yml"],
|
|
88912
88912
|
extensions: ["yaml", "yml"],
|
|
88913
88913
|
load() {
|
|
88914
|
-
return import('./index-
|
|
88914
|
+
return import('./index-5P3yK0Y5.js').then(m => m.yaml());
|
|
88915
88915
|
}
|
|
88916
88916
|
}),
|
|
88917
88917
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -89700,13 +89700,13 @@ const languages = [
|
|
|
89700
89700
|
name: "Vue",
|
|
89701
89701
|
extensions: ["vue"],
|
|
89702
89702
|
load() {
|
|
89703
|
-
return import('./index-
|
|
89703
|
+
return import('./index-F7xi9wdl.js').then(m => m.vue());
|
|
89704
89704
|
}
|
|
89705
89705
|
}),
|
|
89706
89706
|
/*@__PURE__*/LanguageDescription.of({
|
|
89707
89707
|
name: "Angular Template",
|
|
89708
89708
|
load() {
|
|
89709
|
-
return import('./index-
|
|
89709
|
+
return import('./index-C1xWJh2E.js').then(m => m.angular());
|
|
89710
89710
|
}
|
|
89711
89711
|
})
|
|
89712
89712
|
];
|
|
@@ -174760,7 +174760,7 @@ function createRenderDelaySampler() {
|
|
|
174760
174760
|
};
|
|
174761
174761
|
}
|
|
174762
174762
|
|
|
174763
|
-
const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-
|
|
174763
|
+
const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CxuRylDm.js'));
|
|
174764
174764
|
const ImagePanelBody = ({
|
|
174765
174765
|
topic,
|
|
174766
174766
|
frameRenderedEvent,
|
|
@@ -174855,7 +174855,7 @@ const DEFAULT_CAMERA_STATE = {
|
|
|
174855
174855
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
174856
174856
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
174857
174857
|
|
|
174858
|
-
const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-
|
|
174858
|
+
const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-u97AsRd9.js'));
|
|
174859
174859
|
const PointCloudPanelBody = ({
|
|
174860
174860
|
topic,
|
|
174861
174861
|
frameRenderedEvent,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a1 as syntaxTree, $ as ifNotIn, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, a8 as IterMode, a0 as completeFromList, a9 as NodeWeakMap, a7 as snippetCompletion } from './index-
|
|
2
|
+
import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a1 as syntaxTree, $ as ifNotIn, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, a8 as IterMode, a0 as completeFromList, a9 as NodeWeakMap, a7 as snippetCompletion } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, T as foldNodeProp, af as bracketMatchingHandle, X as LanguageSupport, aa as EditorView, a1 as syntaxTree, ab as EditorSelection } from './index-
|
|
2
|
+
import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, T as foldNodeProp, af as bracketMatchingHandle, X as LanguageSupport, aa as EditorView, a1 as syntaxTree, ab as EditorSelection } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, a7 as snippetCompletion, a1 as syntaxTree, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, $ as ifNotIn, a0 as completeFromList, a8 as IterMode, a9 as NodeWeakMap } from './index-
|
|
2
|
+
import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, a7 as snippetCompletion, a1 as syntaxTree, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, $ as ifNotIn, a0 as completeFromList, a8 as IterMode, a9 as NodeWeakMap } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, T as foldNodeProp, a5 as foldInside, Q as indentNodeProp, R as continuedIndent, ae as defineCSSCompletionSource, X as LanguageSupport } from './index-
|
|
2
|
+
import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, T as foldNodeProp, a5 as foldInside, Q as indentNodeProp, R as continuedIndent, ae as defineCSSCompletionSource, X as LanguageSupport } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, U as styleTags, V as tags, X as LanguageSupport, Z as LRParser } from './index-
|
|
2
|
+
import { W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, U as styleTags, V as tags, X as LanguageSupport, Z as LRParser } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, ac as html, ad as parseMixed, ag as javascriptLanguage } from './index-
|
|
2
|
+
import { U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, ac as html, ad as parseMixed, ag as javascriptLanguage } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Y as ExternalTokenizer, Z as LRParser, $ as ifNotIn, a0 as completeFromList, a1 as syntaxTree } from './index-
|
|
2
|
+
import { Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Y as ExternalTokenizer, Z as LRParser, $ as ifNotIn, a0 as completeFromList, a1 as syntaxTree } from './index-D3o7BG11.js';
|
|
3
3
|
import './protobuf-Be0G3NFz.js';
|
|
4
4
|
import './logger-Bqy1nuLj.js';
|
|
5
5
|
import './depth-DlC6A3Te.js';
|
|
@@ -4,7 +4,7 @@ import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Compo
|
|
|
4
4
|
import { createRoot } from 'react-dom/client';
|
|
5
5
|
import { a0 as isSymbol, a1 as toString, a2 as keys, a3 as getSymbols$1, a4 as stubArray, a5 as arrayPush, a6 as baseGetAllKeys, h as getTag, a7 as getAllKeys, l as baseGet, f as baseIteratee, k as castPath, t as toKey, a8 as arrayMap$1, a9 as useCurrentLayoutActions, aa as useCurrentLayoutSelector, r as reportError, A as AppError, ab as usePanelMosaicId, ac as noop$4, L as Logger, ad as useSelectedPanels, p as getPanelTypeFromId, N as useShallowMemo, T as TAB_PANEL_TYPE, K as filterMap, d as dist$2, ae as useAppConfiguration, af as useJsonTreeTheme } from './depth-DlC6A3Te.js';
|
|
6
6
|
import { createStore, useStore } from 'zustand';
|
|
7
|
-
import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, m as murmur2, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, E as ErrorDisplay, S as Stack$1, a as makeStyles$1, u as useTranslation, d as usePanelCatalog, e as EmptyState, i as isEmpty, h as PanelContext, j as PanelCatalogContext, k as usePanelStateStore, l as difference, n as usePanelContext, o as useMessagePipeline, v as v4, p as useDefaultPanelTitle, q as useHoverValue, r as useSetHoverValue, s as useClearHoverValue, t as useMessagePipelineGetter, w as usePanelSettingsTreeUpdate, x as PlayerCapabilities, y as assertNever, z as PlayerPresence, B as isEqual, C as AppEvent, D as isDesktopApp, F as createTheme, G as propTypesExports, H as DEFAULT_CAMERA_STATE$1, I as format$1, J as stringType, K as serializeError, L as stringify$1, M as createIntl, N as createIntlCache, O as useAnalytics } from './index-
|
|
7
|
+
import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, m as murmur2, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, E as ErrorDisplay, S as Stack$1, a as makeStyles$1, u as useTranslation, d as usePanelCatalog, e as EmptyState, i as isEmpty, h as PanelContext, j as PanelCatalogContext, k as usePanelStateStore, l as difference, n as usePanelContext, o as useMessagePipeline, v as v4, p as useDefaultPanelTitle, q as useHoverValue, r as useSetHoverValue, s as useClearHoverValue, t as useMessagePipelineGetter, w as usePanelSettingsTreeUpdate, x as PlayerCapabilities, y as assertNever, z as PlayerPresence, B as isEqual, C as AppEvent, D as isDesktopApp, F as createTheme, G as propTypesExports, H as DEFAULT_CAMERA_STATE$1, I as format$1, J as stringType, K as serializeError, L as stringify$1, M as createIntl, N as createIntlCache, O as useAnalytics } from './index-D3o7BG11.js';
|
|
8
8
|
import { _ as _classPrivateFieldLooseBase, a as _classPrivateFieldLooseKey, d as _objectWithoutProperties, e as _extends$1, f as commonjsGlobal, g as getDefaultExportFromCjs, b as _objectSpread2, i as getAugmentedNamespace, j as _asyncIterator } from './protobuf-Be0G3NFz.js';
|
|
9
9
|
import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
|
|
10
10
|
import { Link, Button, alpha, IconButton, Card, CardActionArea, CardMedia, CardContent, Typography, Container, Tooltip, Fade, ListItem, ListItemButton, ListItemText, List, TextField, InputAdornment, Popper, Grow, Paper, ClickAwayListener, Menu, MenuItem, Divider, buttonClasses, Backdrop, Chip, useTheme, inputBaseClasses, autocompleteClasses, inputClasses, Checkbox, dialogActionsClasses, filledInputClasses, inputAdornmentClasses, listSubheaderClasses, selectClasses, tableCellClasses, ThemeProvider as ThemeProvider$1, tabsClasses as tabsClasses$1, tabClasses, Tabs, Tab, ListItemIcon } from '@mui/material';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { ar as FrameStore, ak as ImagePanel, aj as PanelLayout, al as PointCloudPanel, ah as VisualizerConnection, ai as VisualizerContext, am as constructKeyForTopicRenderMetrics, as as getIMUEventEmitter, ao as globalDecodeMetricsManager, an as globalInputEventMetricsManager, ap as globalRenderMetricsManager, aq as globalThroughputMetricsManager } from './index-
|
|
2
|
+
export { ar as FrameStore, ak as ImagePanel, aj as PanelLayout, al as PointCloudPanel, ah as VisualizerConnection, ai as VisualizerContext, am as constructKeyForTopicRenderMetrics, as as getIMUEventEmitter, ao as globalDecodeMetricsManager, an as globalInputEventMetricsManager, ap as globalRenderMetricsManager, aq as globalThroughputMetricsManager } from './index-D3o7BG11.js';
|
|
3
3
|
export { S as getDistanceFromDepthDataForOffset } from './depth-DlC6A3Te.js';
|
|
4
4
|
import './protobuf-Be0G3NFz.js';
|
|
5
5
|
import './logger-Bqy1nuLj.js';
|
|
@@ -6,7 +6,14 @@ export type TopicDecoders = Map<string, {
|
|
|
6
6
|
decoder: VideoDecoder;
|
|
7
7
|
timing: Map<number, Timestamp>;
|
|
8
8
|
transformations: Map<number, ImgTransformation | undefined>;
|
|
9
|
+
pendingFrame?: PendingFrame;
|
|
9
10
|
}>;
|
|
11
|
+
type PendingFrame = {
|
|
12
|
+
data: Uint8Array;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
receiveTime: Timestamp;
|
|
15
|
+
transformation: ImgTransformation | undefined;
|
|
16
|
+
};
|
|
10
17
|
type DeserializeEncodedFrameH264Args = {
|
|
11
18
|
topic: string;
|
|
12
19
|
message: EncodedFrame | ImgFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAQrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAQrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CACF,CAAC;AAWF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC/C,CAAC;AAqYF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EjD"}
|
|
@@ -35,14 +35,56 @@ function closeDecoder(decoder) {
|
|
|
35
35
|
}
|
|
36
36
|
function closeTopicDecoder(topic, topicDecoders) {
|
|
37
37
|
const decoderInfo = topicDecoders.get(topic);
|
|
38
|
+
topicDecoders.delete(topic);
|
|
38
39
|
closeDecoder(decoderInfo?.decoder);
|
|
39
40
|
decoderInfo?.timing.clear();
|
|
40
41
|
decoderInfo?.transformations.clear();
|
|
42
|
+
if (decoderInfo) {
|
|
43
|
+
decoderInfo.pendingFrame = undefined;
|
|
44
|
+
}
|
|
41
45
|
}
|
|
42
46
|
function isIgnorableInitialDecodeError(error) {
|
|
43
47
|
const message = error instanceof Error ? error.message : String(error);
|
|
44
48
|
return message.includes("A key frame is required after configure() or flush()");
|
|
45
49
|
}
|
|
50
|
+
function decodePendingFrame(topic, topicDecoders, onError) {
|
|
51
|
+
const decoderInfo = topicDecoders.get(topic);
|
|
52
|
+
if (!decoderInfo) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const decoder = decoderInfo.decoder;
|
|
56
|
+
if (decoder.state === "closed" || decoder.decodeQueueSize > 0) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const pendingFrame = decoderInfo.pendingFrame;
|
|
60
|
+
if (!pendingFrame) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
decoderInfo.pendingFrame = undefined;
|
|
64
|
+
decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
|
|
65
|
+
decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
|
|
66
|
+
try {
|
|
67
|
+
ensureDecoderConfigured(decoder);
|
|
68
|
+
if (decoder.state !== "configured" || topicDecoders.get(topic)?.decoder !== decoder) {
|
|
69
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const chunk = new EncodedVideoChunk({
|
|
73
|
+
type: "key",
|
|
74
|
+
data: pendingFrame.data,
|
|
75
|
+
timestamp: pendingFrame.timestamp,
|
|
76
|
+
});
|
|
77
|
+
decoder.decode(chunk);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (isIgnorableInitialDecodeError(error)) {
|
|
81
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
85
|
+
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
46
88
|
function packedToI420(packed, width, height, stride, format, cropLeft = 0, cropTop = 0) {
|
|
47
89
|
if ((width & 1) !== 0 || (height & 1) !== 0) {
|
|
48
90
|
throw new Error("I420 requires even width and height.");
|
|
@@ -149,8 +191,13 @@ function repackI420(source, width, height, yLayout, uLayout, vLayout, cropLeft =
|
|
|
149
191
|
}
|
|
150
192
|
function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
|
|
151
193
|
let hasProducedFrame = false;
|
|
152
|
-
|
|
194
|
+
let decoder;
|
|
195
|
+
decoder = new VideoDecoder({
|
|
153
196
|
output: async (frame) => {
|
|
197
|
+
if (topicDecoders.get(topic)?.decoder !== decoder) {
|
|
198
|
+
frame.close();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
154
201
|
hasProducedFrame = true;
|
|
155
202
|
const visibleRect = frame.visibleRect;
|
|
156
203
|
const frameWidth = visibleRect?.width ?? frame.codedWidth;
|
|
@@ -202,6 +249,7 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
|
|
|
202
249
|
const receiveTime = topicDecoders.get(topic)?.timing.get(frame.timestamp)
|
|
203
250
|
??
|
|
204
251
|
fromMicros(frame.timestamp);
|
|
252
|
+
topicDecoders.get(topic)?.timing.delete(frame.timestamp);
|
|
205
253
|
const transformation = topicDecoders.get(topic)?.transformations.get(frame.timestamp);
|
|
206
254
|
topicDecoders.get(topic)?.transformations.delete(frame.timestamp);
|
|
207
255
|
const foxgloveMessage = {
|
|
@@ -222,8 +270,14 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
|
|
|
222
270
|
depthaiTransformation: transformation,
|
|
223
271
|
});
|
|
224
272
|
frame.close();
|
|
273
|
+
if (topicDecoders.get(topic)?.decoder === decoder) {
|
|
274
|
+
decodePendingFrame(topic, topicDecoders, onError);
|
|
275
|
+
}
|
|
225
276
|
},
|
|
226
277
|
error: (error) => {
|
|
278
|
+
if (topicDecoders.get(topic)?.decoder !== decoder) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
227
281
|
if (!hasProducedFrame && isIgnorableInitialDecodeError(error)) {
|
|
228
282
|
logger.warn(`Ignoring initial H264 decoder error for topic ${topic}: ${error.message}`);
|
|
229
283
|
closeTopicDecoder(topic, topicDecoders);
|
|
@@ -234,6 +288,7 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
|
|
|
234
288
|
onError(new DecoderRuntimeError(topic, error.message));
|
|
235
289
|
},
|
|
236
290
|
});
|
|
291
|
+
return decoder;
|
|
237
292
|
}
|
|
238
293
|
export async function deserializeEncodedFrameH264({ topic, message, topicDecoders, callback, onError, }) {
|
|
239
294
|
const { receiveTime } = parseMessage(message);
|
|
@@ -256,12 +311,14 @@ export async function deserializeEncodedFrameH264({ topic, message, topicDecoder
|
|
|
256
311
|
existingDecoderInfo.decoder = decoder;
|
|
257
312
|
existingDecoderInfo.timing.clear();
|
|
258
313
|
existingDecoderInfo.transformations.clear();
|
|
314
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
259
315
|
}
|
|
260
316
|
else {
|
|
261
317
|
topicDecoders.set(topic, {
|
|
262
318
|
decoder,
|
|
263
319
|
timing: new Map(),
|
|
264
320
|
transformations: new Map(),
|
|
321
|
+
pendingFrame: undefined,
|
|
265
322
|
});
|
|
266
323
|
}
|
|
267
324
|
}
|
|
@@ -270,6 +327,7 @@ export async function deserializeEncodedFrameH264({ topic, message, topicDecoder
|
|
|
270
327
|
ensureDecoderConfigured(existingDecoderInfo.decoder);
|
|
271
328
|
existingDecoderInfo.timing.clear();
|
|
272
329
|
existingDecoderInfo.transformations.clear();
|
|
330
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
273
331
|
}
|
|
274
332
|
catch (error) {
|
|
275
333
|
closeTopicDecoder(topic, topicDecoders);
|
|
@@ -281,39 +339,18 @@ export async function deserializeEncodedFrameH264({ topic, message, topicDecoder
|
|
|
281
339
|
if (!decoderInfo) {
|
|
282
340
|
return;
|
|
283
341
|
}
|
|
284
|
-
if (decoderInfo.decoder.decodeQueueSize > 60) {
|
|
285
|
-
decoderInfo.decoder.reset();
|
|
286
|
-
try {
|
|
287
|
-
ensureDecoderConfigured(decoderInfo.decoder);
|
|
288
|
-
}
|
|
289
|
-
catch (error) {
|
|
290
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
291
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.264 decoder after reset."));
|
|
292
|
-
}
|
|
293
|
-
decoderInfo.timing.clear();
|
|
294
|
-
decoderInfo.transformations.clear();
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
342
|
const microTimestamp = receiveTime.sec * 1_000_000 + Math.floor(receiveTime.nsec / 1_000);
|
|
298
|
-
decoderInfo.timing.set(microTimestamp, receiveTime);
|
|
299
|
-
decoderInfo.transformations.set(microTimestamp, message.transformation);
|
|
300
343
|
const frame = {
|
|
301
|
-
type: 'key',
|
|
302
344
|
data: message.data,
|
|
303
|
-
timestamp: microTimestamp
|
|
345
|
+
timestamp: microTimestamp,
|
|
346
|
+
receiveTime,
|
|
347
|
+
transformation: message.transformation,
|
|
304
348
|
};
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
decoderInfo.decoder.decode(chunk);
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
if (isIgnorableInitialDecodeError(error)) {
|
|
312
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
316
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
|
|
349
|
+
if (decoderInfo.decoder.decodeQueueSize > 0) {
|
|
350
|
+
decoderInfo.pendingFrame = frame;
|
|
351
|
+
return;
|
|
317
352
|
}
|
|
353
|
+
decoderInfo.pendingFrame = frame;
|
|
354
|
+
decodePendingFrame(topic, topicDecoders, onError);
|
|
318
355
|
}
|
|
319
356
|
//# sourceMappingURL=h264.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,14 @@ export type TopicDecoders = Map<string, {
|
|
|
6
6
|
decoder: VideoDecoder;
|
|
7
7
|
timing: Map<number, Timestamp>;
|
|
8
8
|
transformations: Map<number, ImgTransformation | undefined>;
|
|
9
|
+
pendingFrame?: PendingFrame;
|
|
9
10
|
}>;
|
|
11
|
+
type PendingFrame = {
|
|
12
|
+
data: Uint8Array;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
receiveTime: Timestamp;
|
|
15
|
+
transformation: ImgTransformation | undefined;
|
|
16
|
+
};
|
|
10
17
|
type DeserializeEncodedFrameH265Args = {
|
|
11
18
|
topic: string;
|
|
12
19
|
message: EncodedFrame | ImgFrame;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h265.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"h265.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAgDrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CACF,CAAC;AASF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC/C,CAAC;AAmHF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EjD"}
|
|
@@ -35,18 +35,62 @@ function closeDecoder(decoder) {
|
|
|
35
35
|
}
|
|
36
36
|
function closeTopicDecoder(topic, topicDecoders) {
|
|
37
37
|
const decoderInfo = topicDecoders.get(topic);
|
|
38
|
+
topicDecoders.delete(topic);
|
|
38
39
|
closeDecoder(decoderInfo?.decoder);
|
|
39
40
|
decoderInfo?.timing.clear();
|
|
40
41
|
decoderInfo?.transformations.clear();
|
|
42
|
+
if (decoderInfo) {
|
|
43
|
+
decoderInfo.pendingFrame = undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function decodePendingFrame(topic, topicDecoders, onError) {
|
|
47
|
+
const decoderInfo = topicDecoders.get(topic);
|
|
48
|
+
if (!decoderInfo) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const decoder = decoderInfo.decoder;
|
|
52
|
+
if (decoder.state === "closed" || decoder.decodeQueueSize > 0) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const pendingFrame = decoderInfo.pendingFrame;
|
|
56
|
+
if (!pendingFrame) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
decoderInfo.pendingFrame = undefined;
|
|
60
|
+
decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
|
|
61
|
+
decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
|
|
62
|
+
try {
|
|
63
|
+
ensureDecoderConfigured(decoder);
|
|
64
|
+
if (decoder.state !== "configured" || topicDecoders.get(topic)?.decoder !== decoder) {
|
|
65
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const chunk = new EncodedVideoChunk({
|
|
69
|
+
type: "key",
|
|
70
|
+
data: pendingFrame.data,
|
|
71
|
+
timestamp: pendingFrame.timestamp,
|
|
72
|
+
});
|
|
73
|
+
decoder.decode(chunk);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
closeTopicDecoder(topic, topicDecoders);
|
|
77
|
+
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
|
|
78
|
+
}
|
|
41
79
|
}
|
|
42
80
|
function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
|
|
43
|
-
|
|
81
|
+
let decoder;
|
|
82
|
+
decoder = new VideoDecoder({
|
|
44
83
|
output: async (frame) => {
|
|
84
|
+
if (topicDecoders.get(topic)?.decoder !== decoder) {
|
|
85
|
+
frame.close();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
45
88
|
const buffer = new Uint8Array(frame.allocationSize());
|
|
46
89
|
await frame.copyTo(buffer);
|
|
47
90
|
const receiveTime = topicDecoders.get(topic)?.timing.get(frame.timestamp)
|
|
48
91
|
??
|
|
49
92
|
fromMicros(frame.timestamp);
|
|
93
|
+
topicDecoders.get(topic)?.timing.delete(frame.timestamp);
|
|
50
94
|
const transformation = topicDecoders.get(topic)?.transformations.get(frame.timestamp);
|
|
51
95
|
topicDecoders.get(topic)?.transformations.delete(frame.timestamp);
|
|
52
96
|
const [encoding, step] = parsePixelFormat(frame.format);
|
|
@@ -68,13 +112,20 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
|
|
|
68
112
|
depthaiTransformation: transformation,
|
|
69
113
|
});
|
|
70
114
|
frame.close();
|
|
115
|
+
if (topicDecoders.get(topic)?.decoder === decoder) {
|
|
116
|
+
decodePendingFrame(topic, topicDecoders, onError);
|
|
117
|
+
}
|
|
71
118
|
},
|
|
72
119
|
error: (error) => {
|
|
120
|
+
if (topicDecoders.get(topic)?.decoder !== decoder) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
73
123
|
logger.error(error);
|
|
74
124
|
closeTopicDecoder(topic, topicDecoders);
|
|
75
125
|
onError(new DecoderRuntimeError(topic, error.message));
|
|
76
126
|
},
|
|
77
127
|
});
|
|
128
|
+
return decoder;
|
|
78
129
|
}
|
|
79
130
|
export async function deserializeEncodedFrameH265({ topic, message, topicDecoders, callback, onError, }) {
|
|
80
131
|
const { receiveTime } = parseMessage(message);
|
|
@@ -97,12 +148,14 @@ export async function deserializeEncodedFrameH265({ topic, message, topicDecoder
|
|
|
97
148
|
existingDecoderInfo.decoder = decoder;
|
|
98
149
|
existingDecoderInfo.timing.clear();
|
|
99
150
|
existingDecoderInfo.transformations.clear();
|
|
151
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
100
152
|
}
|
|
101
153
|
else {
|
|
102
154
|
topicDecoders.set(topic, {
|
|
103
155
|
decoder,
|
|
104
156
|
timing: new Map(),
|
|
105
157
|
transformations: new Map(),
|
|
158
|
+
pendingFrame: undefined,
|
|
106
159
|
});
|
|
107
160
|
}
|
|
108
161
|
}
|
|
@@ -111,6 +164,7 @@ export async function deserializeEncodedFrameH265({ topic, message, topicDecoder
|
|
|
111
164
|
ensureDecoderConfigured(existingDecoderInfo.decoder);
|
|
112
165
|
existingDecoderInfo.timing.clear();
|
|
113
166
|
existingDecoderInfo.transformations.clear();
|
|
167
|
+
existingDecoderInfo.pendingFrame = undefined;
|
|
114
168
|
}
|
|
115
169
|
catch (error) {
|
|
116
170
|
closeTopicDecoder(topic, topicDecoders);
|
|
@@ -122,35 +176,18 @@ export async function deserializeEncodedFrameH265({ topic, message, topicDecoder
|
|
|
122
176
|
if (!decoderInfo) {
|
|
123
177
|
return;
|
|
124
178
|
}
|
|
125
|
-
if (decoderInfo.decoder.decodeQueueSize > 60) {
|
|
126
|
-
decoderInfo.decoder.reset();
|
|
127
|
-
try {
|
|
128
|
-
ensureDecoderConfigured(decoderInfo.decoder);
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
132
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.265 decoder after reset."));
|
|
133
|
-
}
|
|
134
|
-
decoderInfo.timing.clear();
|
|
135
|
-
decoderInfo.transformations.clear();
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
179
|
const microTimestamp = receiveTime.sec * 1_000_000 + Math.floor(receiveTime.nsec / 1_000);
|
|
139
|
-
decoderInfo.timing.set(microTimestamp, receiveTime);
|
|
140
|
-
decoderInfo.transformations.set(microTimestamp, message.transformation);
|
|
141
180
|
const frame = {
|
|
142
|
-
type: 'key',
|
|
143
181
|
data: message.data,
|
|
144
|
-
timestamp: microTimestamp
|
|
182
|
+
timestamp: microTimestamp,
|
|
183
|
+
receiveTime,
|
|
184
|
+
transformation: message.transformation,
|
|
145
185
|
};
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
decoderInfo.decoder.decode(chunk);
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
closeTopicDecoder(topic, topicDecoders);
|
|
153
|
-
onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
|
|
186
|
+
if (decoderInfo.decoder.decodeQueueSize > 0) {
|
|
187
|
+
decoderInfo.pendingFrame = frame;
|
|
188
|
+
return;
|
|
154
189
|
}
|
|
190
|
+
decoderInfo.pendingFrame = frame;
|
|
191
|
+
decodePendingFrame(topic, topicDecoders, onError);
|
|
155
192
|
}
|
|
156
193
|
//# sourceMappingURL=h265.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h265.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAM9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAElC,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,OAAO,CAAC,SAAS,CAAC;QAChB,KAAK,EAAE,iBAAiB;QACxB,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAqB;IACpD,IAAI,OAAO,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;QACrC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAiC;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,aAA4B;IACpE,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,WAAW,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"h265.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"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"}
|