Skip to content

Commit 402c4d2

Browse files
committed
Switch to canvas to prevent black display
1 parent c2f3cd0 commit 402c4d2

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

client/src/components/annotators/NativeVideoAnnotator.vue

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,8 @@ export default defineComponent({
7272
setSpeed,
7373
});
7474
75-
// Canvas for rendering frames
75+
// Canvas for dimension tracking
7676
const frameCanvas = document.createElement('canvas');
77-
const frameCtx = frameCanvas.getContext('2d');
7877
7978
// Video info loaded from backend
8079
const videoInfo = ref<{
@@ -166,26 +165,29 @@ export default defineComponent({
166165
}
167166
168167
/**
169-
* Render a frame to the canvas
168+
* Render a frame to the quad feature
170169
*/
171170
async function renderFrame(frameNumber: number) {
172171
try {
173172
const img = await loadFrame(frameNumber);
174173
174+
// Update canvas dimensions if needed
175175
if (frameCanvas.width !== img.width || frameCanvas.height !== img.height) {
176176
frameCanvas.width = img.width;
177177
frameCanvas.height = img.height;
178178
}
179179
180-
if (frameCtx) {
181-
frameCtx.drawImage(img, 0, 0);
182-
}
183-
184-
// Update the geojs quad feature
185-
if (geoViewer.value) {
186-
geoViewer.value.scheduleAnimationFrame(() => {
187-
geoViewer.value.draw();
188-
});
180+
// Update the geojs quad feature with the new image
181+
if (quadFeature) {
182+
quadFeature
183+
.data([
184+
{
185+
ul: { x: 0, y: 0 },
186+
lr: { x: img.width, y: img.height },
187+
image: img,
188+
},
189+
])
190+
.draw();
189191
}
190192
} catch (err) {
191193
console.error(`Failed to render frame ${frameNumber}:`, err);
@@ -287,6 +289,8 @@ export default defineComponent({
287289
288290
// eslint-disable-next-line @typescript-eslint/no-explicit-any
289291
let quadFeatureLayer = undefined as any;
292+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
293+
let quadFeature = undefined as any;
290294
291295
watch(
292296
() => props.isDefaultImage,
@@ -327,14 +331,15 @@ export default defineComponent({
327331
// Initialize geojs viewer
328332
initializeViewer(width, height);
329333
330-
// Create quad feature layer with the canvas as the source
334+
// Create quad feature layer for rendering frames
331335
quadFeatureLayer = geoViewer.value.createLayer('feature', {
332336
features: ['quad'],
333337
autoshareRenderer: false,
338+
renderer: 'canvas',
334339
});
335340
336-
quadFeatureLayer
337-
.createFeature('quad')
341+
quadFeature = quadFeatureLayer.createFeature('quad');
342+
quadFeature
338343
.data([
339344
{
340345
ul: { x: 0, y: 0 },

0 commit comments

Comments
 (0)