diff --git a/src/components/video-editor/VideoEditor.tsx b/src/components/video-editor/VideoEditor.tsx index 269eebaf..88a31e35 100644 --- a/src/components/video-editor/VideoEditor.tsx +++ b/src/components/video-editor/VideoEditor.tsx @@ -5282,18 +5282,21 @@ export default function VideoEditor() { - Nothing's broken, but we won't be able to render an animated - cursor overlay. + {t( + "editor.nativeCaptureUnavailable.title", + "Nothing’s broken, but we won’t be able to render an animated cursor overlay.", + )} - Your device does not support native capture. This could be for a variety of - reasons we haven't figured out yet. This doesn't break Recordly, - but it does make cursor smoothening impossible. + {t( + "editor.nativeCaptureUnavailable.description", + "Your device does not support native capture. This could be for a variety of reasons we haven’t figured out yet. This doesn’t break Recordly, but it does make cursor smoothing impossible.", + )} diff --git a/src/components/video-editor/VideoPlayback.tsx b/src/components/video-editor/VideoPlayback.tsx index 764eef78..7202f25a 100644 --- a/src/components/video-editor/VideoPlayback.tsx +++ b/src/components/video-editor/VideoPlayback.tsx @@ -1299,7 +1299,7 @@ const VideoPlayback = forwardRef( motionBlurStateRef.current = createMotionBlurState(); videoEffectsContainer.filters = zoomMotionBlur > 0 ? [motionBlurFilter, zoomBlurFilter] : null; - }, [zoomMotionBlur]); + }, [videoPath, zoomMotionBlur]); useEffect(() => { zoomMotionBlurTuningRef.current = zoomMotionBlurTuning; diff --git a/src/components/video-editor/projectPersistence.ts b/src/components/video-editor/projectPersistence.ts index 8022bff8..c81f32f2 100644 --- a/src/components/video-editor/projectPersistence.ts +++ b/src/components/video-editor/projectPersistence.ts @@ -376,7 +376,7 @@ export function normalizeProjectEditor(editor: Partial): Pro (editor as Partial).zoomTemporalMotionBlur, ) ? clamp((editor as Partial).zoomTemporalMotionBlur as number, 0, 2) - : 0; + : normalizedZoomMotionBlur; const normalizedBackgroundBlur = isFiniteNumber( (editor as Partial).backgroundBlur, ) diff --git a/src/i18n/locales/en/editor.json b/src/i18n/locales/en/editor.json index cf070cde..90252230 100644 --- a/src/i18n/locales/en/editor.json +++ b/src/i18n/locales/en/editor.json @@ -113,6 +113,11 @@ "project": { "untitled": "Untitled" }, + "nativeCaptureUnavailable": { + "title": "Nothing’s broken, but we won’t be able to render an animated cursor overlay.", + "description": "Your device does not support native capture. This could be for a variety of reasons we haven’t figured out yet. This doesn’t break Recordly, but it does make cursor smoothing impossible.", + "confirm": "Okay" + }, "exportStatus": { "exporting": "Exporting", "renderingFile": "Rendering your file.", diff --git a/src/i18n/locales/es/editor.json b/src/i18n/locales/es/editor.json index a42ea123..40373f1a 100644 --- a/src/i18n/locales/es/editor.json +++ b/src/i18n/locales/es/editor.json @@ -113,6 +113,11 @@ "project": { "untitled": "Sin título" }, + "nativeCaptureUnavailable": { + "title": "Nada está roto, pero no podremos renderizar una superposición de cursor animada.", + "description": "Tu dispositivo no es compatible con la captura nativa. Esto puede deberse a varias razones que todavía no hemos identificado. Recordly seguirá funcionando, pero hará imposible el suavizado del cursor.", + "confirm": "Entendido" + }, "exportStatus": { "exporting": "Exportando", "renderingFile": "Renderizando tu archivo.", diff --git a/src/lib/exporter/frameRenderer.ts b/src/lib/exporter/frameRenderer.ts index e8e61a48..ae2c5f2d 100644 --- a/src/lib/exporter/frameRenderer.ts +++ b/src/lib/exporter/frameRenderer.ts @@ -78,8 +78,6 @@ import { ForwardFrameSource } from "./forwardFrameSource"; import { resolveMediaElementSource } from "./localMediaSource"; import { buildTemporalSamplePlanUs, getTemporalMotionBlurConfig } from "./temporalMotionBlur"; -const TEMPORAL_ZOOM_MOTION_BLUR_ENABLED = false; - interface FrameRenderConfig { width: number; height: number; @@ -1278,7 +1276,6 @@ export class FrameRenderer { } const temporalSnapshot = - TEMPORAL_ZOOM_MOTION_BLUR_ENABLED && (this.config.zoomTemporalMotionBlur ?? 0) > 0 && typeof frameDurationUs === "number" && frameDurationUs > 0 diff --git a/src/lib/exporter/modernFrameRenderer.ts b/src/lib/exporter/modernFrameRenderer.ts index 11342a83..bfd5f87f 100644 --- a/src/lib/exporter/modernFrameRenderer.ts +++ b/src/lib/exporter/modernFrameRenderer.ts @@ -94,8 +94,6 @@ import { } from "./shadowProfile"; import { buildTemporalSamplePlanUs, getTemporalMotionBlurConfig } from "./temporalMotionBlur"; -const TEMPORAL_ZOOM_MOTION_BLUR_ENABLED = false; - import type { ExportRenderBackend } from "./types"; interface FrameRenderConfig { @@ -2719,7 +2717,6 @@ export class FrameRenderer { } const temporalSnapshot = - TEMPORAL_ZOOM_MOTION_BLUR_ENABLED && (this.config.zoomTemporalMotionBlur ?? 0) > 0 && typeof frameDurationUs === "number" && frameDurationUs > 0