@remotion/web-renderer 4.0.447 → 4.0.448

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/audio.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { TRenderAsset } from 'remotion';
2
- export declare const onlyInlineAudio: ({ assets, fps, timestamp, }: {
2
+ export declare const onlyInlineAudio: ({ assets, fps, timestamp, sampleRate, }: {
3
3
  assets: TRenderAsset[];
4
4
  fps: number;
5
5
  timestamp: number;
6
+ sampleRate: number;
6
7
  }) => AudioData | null;
@@ -16,6 +16,7 @@ export declare const calculateTransforms: ({ element, rootElement, }: {
16
16
  precompositing: {
17
17
  needs3DTransformViaWebGL: boolean;
18
18
  needsMaskImage: LinearGradientInfo | null;
19
+ needsFilter: string | null;
19
20
  needsPrecompositing: boolean;
20
21
  };
21
22
  };
@@ -0,0 +1 @@
1
+ export declare const getPrecomposeRectForFilter: (element: HTMLElement | SVGElement) => DOMRect;
@@ -670,7 +670,6 @@ var handleArtifacts = () => {
670
670
 
671
671
  // src/audio.ts
672
672
  var TARGET_NUMBER_OF_CHANNELS = 2;
673
- var TARGET_SAMPLE_RATE = 48000;
674
673
  function mixAudio(waves, length) {
675
674
  if (waves.length === 1 && waves[0].length === length) {
676
675
  return waves[0];
@@ -691,13 +690,14 @@ function mixAudio(waves, length) {
691
690
  var onlyInlineAudio = ({
692
691
  assets,
693
692
  fps,
694
- timestamp
693
+ timestamp,
694
+ sampleRate
695
695
  }) => {
696
696
  const inlineAudio = assets.filter((asset) => asset.type === "inline-audio");
697
697
  if (inlineAudio.length === 0) {
698
698
  return null;
699
699
  }
700
- const expectedLength = Math.round(TARGET_NUMBER_OF_CHANNELS * TARGET_SAMPLE_RATE / fps);
700
+ const expectedLength = Math.round(TARGET_NUMBER_OF_CHANNELS * sampleRate / fps);
701
701
  for (const asset of inlineAudio) {
702
702
  if (asset.toneFrequency !== 1) {
703
703
  throw new Error("Setting the toneFrequency is not supported yet in web rendering.");
@@ -709,7 +709,7 @@ var onlyInlineAudio = ({
709
709
  format: "s16",
710
710
  numberOfChannels: TARGET_NUMBER_OF_CHANNELS,
711
711
  numberOfFrames: expectedLength / TARGET_NUMBER_OF_CHANNELS,
712
- sampleRate: TARGET_SAMPLE_RATE,
712
+ sampleRate,
713
713
  timestamp
714
714
  });
715
715
  };
@@ -1107,7 +1107,8 @@ function createScaffold({
1107
1107
  defaultOutName: defaultOutName ?? null,
1108
1108
  defaultVideoImageFormat: null,
1109
1109
  defaultPixelFormat: null,
1110
- defaultProResProfile: null
1110
+ defaultProResProfile: null,
1111
+ defaultSampleRate: null
1111
1112
  },
1112
1113
  folders: []
1113
1114
  },
@@ -2057,6 +2058,7 @@ var calculateTransforms = ({
2057
2058
  let opacity = 1;
2058
2059
  let elementComputedStyle = null;
2059
2060
  let maskImageInfo = null;
2061
+ let filterValue = null;
2060
2062
  while (parent) {
2061
2063
  const computedStyle = getComputedStyle(parent);
2062
2064
  if (parent === element) {
@@ -2064,6 +2066,16 @@ var calculateTransforms = ({
2064
2066
  opacity = parseFloat(computedStyle.opacity);
2065
2067
  const maskImageValue = getMaskImageValue(computedStyle);
2066
2068
  maskImageInfo = maskImageValue ? parseMaskImage(maskImageValue) : null;
2069
+ const computedFilter = computedStyle.filter;
2070
+ if (computedFilter && computedFilter !== "none") {
2071
+ filterValue = computedFilter;
2072
+ const originalFilter = parent.style.filter;
2073
+ parent.style.filter = "none";
2074
+ const parentRefFilter = parent;
2075
+ toReset.push(() => {
2076
+ parentRefFilter.style.filter = originalFilter;
2077
+ });
2078
+ }
2067
2079
  const originalMaskImage = parent.style.maskImage;
2068
2080
  const originalWebkitMaskImage = parent.style.webkitMaskImage;
2069
2081
  parent.style.maskImage = "none";
@@ -2127,6 +2139,7 @@ var calculateTransforms = ({
2127
2139
  }
2128
2140
  const needs3DTransformViaWebGL = !totalMatrix.is2D;
2129
2141
  const needsMaskImage = maskImageInfo !== null;
2142
+ const needsFilter = filterValue !== null;
2130
2143
  return {
2131
2144
  dimensions,
2132
2145
  totalMatrix,
@@ -2142,7 +2155,8 @@ var calculateTransforms = ({
2142
2155
  precompositing: {
2143
2156
  needs3DTransformViaWebGL,
2144
2157
  needsMaskImage: maskImageInfo,
2145
- needsPrecompositing: Boolean(needs3DTransformViaWebGL || needsMaskImage)
2158
+ needsFilter: filterValue,
2159
+ needsPrecompositing: Boolean(needs3DTransformViaWebGL || needsMaskImage || needsFilter)
2146
2160
  }
2147
2161
  };
2148
2162
  };
@@ -3509,6 +3523,11 @@ var handle3dTransform = ({
3509
3523
  return transformed;
3510
3524
  };
3511
3525
 
3526
+ // src/drawing/handle-filter.ts
3527
+ var getPrecomposeRectForFilter = (element) => {
3528
+ return getBiggestBoundingClientRect(element);
3529
+ };
3530
+
3512
3531
  // src/drawing/handle-mask.ts
3513
3532
  var getPrecomposeRectForMask = (element) => {
3514
3533
  const boundingRect = getBiggestBoundingClientRect(element);
@@ -3596,6 +3615,12 @@ var processNode = async ({
3596
3615
  if (precompositing.needsMaskImage) {
3597
3616
  precomposeRect = roundToExpandRect(getPrecomposeRectForMask(element));
3598
3617
  }
3618
+ if (precompositing.needsFilter) {
3619
+ precomposeRect = roundToExpandRect(getWiderRectAndExpand({
3620
+ firstRect: precomposeRect,
3621
+ secondRect: getPrecomposeRectForFilter(element)
3622
+ }));
3623
+ }
3599
3624
  if (precompositing.needs3DTransformViaWebGL) {
3600
3625
  const tentativePrecomposeRect = getPrecomposeRectFor3DTransform({
3601
3626
  element,
@@ -3658,8 +3683,13 @@ var processNode = async ({
3658
3683
  }
3659
3684
  }
3660
3685
  const previousTransform = context.getTransform();
3686
+ const previousFilter = context.filter;
3661
3687
  context.setTransform(new DOMMatrix);
3688
+ if (precompositing.needsFilter) {
3689
+ context.filter = precompositing.needsFilter;
3690
+ }
3662
3691
  context.drawImage(drawable, 0, drawable.height - rectAfterTransforms.height, rectAfterTransforms.width, rectAfterTransforms.height, rectAfterTransforms.left - parentRect.x, rectAfterTransforms.top - parentRect.y, rectAfterTransforms.width, rectAfterTransforms.height);
3692
+ context.filter = previousFilter;
3663
3693
  context.setTransform(previousTransform);
3664
3694
  Internals6.Log.trace({
3665
3695
  logLevel,
@@ -4274,7 +4304,8 @@ var internalRenderMediaOnWeb = async ({
4274
4304
  muted,
4275
4305
  scale,
4276
4306
  isProduction,
4277
- allowHtmlInCanvas
4307
+ allowHtmlInCanvas,
4308
+ sampleRate
4278
4309
  }) => {
4279
4310
  let __stack2 = [];
4280
4311
  try {
@@ -4553,7 +4584,7 @@ var internalRenderMediaOnWeb = async ({
4553
4584
  if (signal?.aborted) {
4554
4585
  throw new Error("renderMediaOnWeb() was cancelled");
4555
4586
  }
4556
- const audio = muted ? null : onlyInlineAudio({ assets, fps: resolved.fps, timestamp });
4587
+ const audio = muted ? null : onlyInlineAudio({ assets, fps: resolved.fps, timestamp, sampleRate });
4557
4588
  internalState.addAudioMixingTime(performance.now() - audioCombineStart);
4558
4589
  const addSampleStart = performance.now();
4559
4590
  const encodingPromises = [];
@@ -4667,7 +4698,8 @@ var renderMediaOnWeb = (options) => {
4667
4698
  muted: options.muted ?? false,
4668
4699
  scale: options.scale ?? 1,
4669
4700
  isProduction: options.isProduction ?? true,
4670
- allowHtmlInCanvas: options.allowHtmlInCanvas ?? false
4701
+ allowHtmlInCanvas: options.allowHtmlInCanvas ?? false,
4702
+ sampleRate: options.sampleRate ?? 48000
4671
4703
  }));
4672
4704
  return onlyOneRenderAtATimeQueue.ref;
4673
4705
  };
@@ -66,6 +66,7 @@ type OptionalRenderMediaOnWebOptions<Schema extends $ZodObject> = {
66
66
  muted: boolean;
67
67
  scale: number;
68
68
  allowHtmlInCanvas: boolean;
69
+ sampleRate: number;
69
70
  };
70
71
  export type RenderMediaOnWebOptions<Schema extends $ZodObject, Props extends Record<string, unknown>> = MandatoryRenderMediaOnWebOptions<Schema, Props> & Partial<OptionalRenderMediaOnWebOptions<Schema>> & InputPropsIfHasProps<Schema, Props>;
71
72
  export declare const renderMediaOnWeb: <Schema extends $ZodObject<Readonly<Readonly<{
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/web-renderer"
4
4
  },
5
5
  "name": "@remotion/web-renderer",
6
- "version": "4.0.447",
6
+ "version": "4.0.448",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
9
9
  "scripts": {
@@ -22,16 +22,16 @@
22
22
  "@mediabunny/mp3-encoder": "1.39.2",
23
23
  "@mediabunny/aac-encoder": "1.39.2",
24
24
  "@mediabunny/flac-encoder": "1.39.2",
25
- "@remotion/licensing": "4.0.447",
26
- "remotion": "4.0.447",
25
+ "@remotion/licensing": "4.0.448",
26
+ "remotion": "4.0.448",
27
27
  "mediabunny": "1.39.2"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@react-three/fiber": "9.2.0",
31
- "@remotion/eslint-config-internal": "4.0.447",
32
- "@remotion/player": "4.0.447",
33
- "@remotion/media": "4.0.447",
34
- "@remotion/three": "4.0.447",
31
+ "@remotion/eslint-config-internal": "4.0.448",
32
+ "@remotion/player": "4.0.448",
33
+ "@remotion/media": "4.0.448",
34
+ "@remotion/three": "4.0.448",
35
35
  "@types/three": "0.170.0",
36
36
  "@typescript/native-preview": "7.0.0-dev.20260217.1",
37
37
  "@vitejs/plugin-react": "4.3.4",