Commit Graph
2794 Commits
Author SHA1 Message Date
tylerjenningsw 852f98d6a5 Merge enhance/filmcraft-avi-backend into enhance/avi-import
# Conflicts:
#	crates/export/tests/it/movie_bytes.rs
2026-10-29 18:58:57 -04:00
tylerjenningsw c9a91d9ddf Merge remote-tracking branch 'origin/main' into pr1736-avi-backend 2026-10-29 18:49:01 -04:00
tylerjenningsw aecdffecb0 Media: read the LATM configuration only when FilmCraft plays that MPEG stream, not an ADTS one before it (#1701) 2026-10-29 18:44:34 -04:00
tylerjenningsw 800b555e51 Media: read the AAC configuration of the MP4 or Matroska track FilmCraft plays, not an empty one before it (#1701) 2026-10-29 18:44:05 -04:00
BFlat 77bea50f0b Merge pull request #2617 from storytold/docs/2565-readme-effect-count
README: 308 effects, and a test keeps the count current (#2565)
2026-10-30 05:42:00 +07:00
BFlat 87767b1252 Merge pull request #2616 from storytold/fix/999-viewer-edge-pan
Viewer: a mask vertex held at the panel edge pans the view (#999)
2026-10-30 05:41:55 +07:00
BFlat d766467000 Merge pull request #2612 from storytold/fix/2210-timeline-group-drag
Timeline: drag effects, masks and shape items to reorder them (#2210)
2026-10-30 05:41:49 +07:00
BFlat b724eb6842 Merge pull request #2611 from storytold/fix/2261-pad-budget
Effects: padded buffers stay within a pixel budget (#2261)
2026-10-30 05:41:43 +07:00
BFlat cdc5fddaff Merge pull request #2610 from storytold/fix/text-line-join
Text: stroke Line Join — Miter, Round or Bevel (#2077)
2026-10-30 05:41:27 +07:00
tylerjenningsw 4daff9a74a Export tests: say why the H.264 pin moved with FilmCraft 09aaf9b (#1701) 2026-10-29 18:20:09 -04:00
tylerjenningsw 799303ad68 Media tests: read ffmpeg 4.2's PCE fixtures with their real channel count (#1701)
ffmpeg 4.2 writes 2 in the sample entry of an AAC PCE layout and FilmCraft
decodes as many channels as that names, so the 6.1 check now reads a copy
naming all seven instead of skipping. Configuration 12 moves to the
synthetic layout tests.
2026-10-29 18:20:09 -04:00
tylerjenningsw ec86f24afe Media tests: every AAC layout mixes by speaker in MP4, Matroska and ADTS (#1701)
Tones encoded with FilmCraft's AAC encoder, with the configuration rewritten
to 11, 12 or ffmpeg's 6.1 PCE where the coded elements fit it, so nothing
depends on ffmpeg or skips. Expected gains come from each channel's speaker.
2026-10-29 18:20:09 -04:00
tylerjenningsw e675df7cab Media: downmix AAC by where each decoded channel plays (#1701)
The gains of an AAC source now come from the configuration FilmCraft decodes
it with, read from MP4/MOV (esds), Matroska (CodecPrivate) and LATM in MPEG
TS/PS (its first StreamMuxConfig). Channel configurations 3 to 6, 11 and 12
arrive reordered to WAVE order, 4 as L R C Cs, 7 in element order. A program
config element goes by its element positions, except the six structures in
which ffmpeg's encoder fills its own channel order across them (an LFE in a
side SCE, a back centre in a side pair), recognised by its "Lavc" comment.
ADTS can only signal configurations 1 to 7 that FilmCraft decodes, which the
channel count tells apart. A decode of fewer channels than the layout keeps
its first ones (7 of configuration 7's 8 in MPEG-TS LATM).
2026-10-29 18:20:08 -04:00
bflatastic 2e9542dada Merge remote-tracking branch 'origin/main' into fix/2261-pad-budget
# Conflicts:
#	crates/effects/src/lib.rs
2026-10-30 05:17:57 +07:00
bflatasticandClaude Opus 5.5 f5363e9d39 README: 308 effects, and a test keeps the count current (#2565)
The README quoted 306 effects in three places while the registry (and the
generated docs/effects.md) had 307, now 308. A catalog test checks every
effect count the README gives against the registry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 05:16:23 +07:00
bflatasticandClaude Opus 5.5 e2cf4477e7 Viewer: a mask vertex held at the panel edge pans the view (#999)
Dragging a mask or shape vertex, a tangent or a Pen point against the
edge of the Composition panel now pans the view toward that edge, faster
the further out the pointer is, and the point keeps moving with it, so
zoomed-in rotoscoping no longer stops at the panel edge (as in After
Effects).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 05:15:35 +07:00
BFlat f20dfcbda2 Merge pull request #2263 from SusieeTheLinuxUser/fix/2227-clear-text-edit-standdown
Edit: an open text edit stands down the Project-panel Clear redirect (#2227)
2026-10-30 05:11:05 +07:00
BFlat c35fe911e2 Merge pull request #2266 from SusieeTheLinuxUser/fix/2226-duplicate-ends-text-edit
Edit: duplicating during a text edit ends the edit (#2226)
2026-10-30 05:11:00 +07:00
bflatastic ee01d7d4f6 Merge main; keep the batch-tested versions of crates/engine/src/cmd/layer/transform.rs 2026-10-30 05:10:42 +07:00
bflatastic fdb0e5d3c9 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 05:10:41 +07:00
BFlat faab5b1c81 Merge pull request #2039 from midasdf/jp/cjk-composition-rendering
Text: Chinese Han text uses the installed Chinese face (#453)
2026-10-30 05:10:35 +07:00
BFlat 5a1d909496 Merge pull request #2109 from gmrmad1/fix/2072-variable-font-tests
tests: count variable font named instances as styles (#2072)
2026-10-30 05:10:30 +07:00
BFlat 376f303d8f Merge pull request #2107 from gmrmad1/fix/2073-replace-footage-kind
engine: Replace Footage keeps a still a still (#2073)
2026-10-30 05:10:25 +07:00
bflatastic f2773f68ac Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/project/src/render_queue.rs
2026-10-30 05:10:05 +07:00
BFlat 90fbd6609d Merge pull request #2270 from mypenc/altfix
Viewer: Alt/Option-drop of a Project item replaces the layer under the pointer
2026-10-30 05:09:55 +07:00
BFlat 07d1de1764 Merge pull request #2534 from klosixgaming-arch/fix/2022-render-banding
export: dither 16/32 bpc renders on the way to 8 bits, and let Render Settings Color Depth set the render's depth (#2022)
2026-10-30 05:09:48 +07:00
BFlat e28612dedd Merge pull request #2574 from roadhong/fix/audio-level-keyframes-per-sample
Audio: keyframed Audio Levels and Stereo Mixer levels ramp within a mix block
2026-10-30 05:09:38 +07:00
BFlat e2128a6743 Merge pull request #2118 from ChristopherLinnett/fix/issue-2092-camera-focus-crash
fix: bound Classic 3D depth-of-field blur and reject non-finite focus distances (#2092)
2026-10-30 05:09:17 +07:00
bflatastic e37df317af Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
2026-10-30 05:08:59 +07:00
BFlat 218b8e34ae Merge pull request #1514 from FeiLiuEM/i18n/1451-tool-names
i18n: the 31 tool names are translated (zh-hans, zh-hant)
2026-10-30 05:08:49 +07:00
bflatastic de40efed7c Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 05:08:34 +07:00
bflatastic 971e75d06a Merge main; keep the batch-tested versions of crates/engine/src/tests/rig3d.rs 2026-10-30 05:08:15 +07:00
bflatastic 57b76bcc88 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 05:08:13 +07:00
BFlat 5874304437 Merge pull request #1887 from ki2pixel/expressions-cubic-bezier
Expressions: cubic-Bezier easing helper (bezier(...)) (#1884)
2026-10-30 05:08:06 +07:00
BFlat dac865f134 Merge pull request #1423 from nanox333/fix/1417-wav-markers
#1417: WAV markers show on the audio layer
2026-10-30 05:08:00 +07:00
BFlat 5ba07d18c4 Merge pull request #1165 from nanox333/fix/1010-orientation-followup
Parented cameras and lights keep their static and keyed Orientation (refs #1010)
2026-10-30 05:07:53 +07:00
BFlat 2ffc2bdf61 Merge pull request #1164 from nanox333/fix/1063-text-animator-stacked
Scripts: text animator properties resolve by their After Effects names (refs #1063)
2026-10-30 05:07:48 +07:00
BFlat 664ca1a85b Merge pull request #1568 from midasmatterhorn/fix/r4-output-size-clamp
project: output_size never asks for sides past the comp limit
2026-10-30 05:07:42 +07:00
tylerjenningsw 71920d995c Merge remote-tracking branch 'origin/main' into pr1736-avi-backend 2026-10-29 18:07:39 -04:00
tylerjenningsw 393a7aa565 Export tests: pin the H.264 bytes FilmCraft 09aaf9b writes (#1701)
The encoder's first-frame user_data_unregistered SEI now lists its settings
("... - options: rc=vbr bitrate=10000 ... scenecut=1", 211 bytes where
"filmcraft-h264enc 0.1.1 - clean-room H.264 encoder" took 50): +161 bytes.
The same build gives (104322, 11051847956767423392), the pin Linux CI took on
a base before the 19-byte nclx colr box, when that box is left out, so the
bytes match across platforms.
2026-10-29 17:57:08 -04:00
tylerjenningsw 8bb5dbb81e Media: downmix AAC in the order its channel configuration decodes in (#1701)
FilmCraft reorders AAC configurations 3 to 6, 11 and 12 to WAVE/SMPTE order
and leaves configuration 7 and program config elements as coded, so the
channel count alone can't say which order arrives: ffmpeg writes 7.1 as
configuration 7 (C L R first) and 6.1 as a PCE it fills in its own order
(L R C LFE Cs Ls Rs), while FilmCraft's encoder writes a centre-first PCE.
The order is now read from an MP4/MOV's AudioSpecificConfig when the source
opens; other containers keep a channel-count guess.

The ffmpeg oracle test gains configuration 12 (ffmpeg's 7.1 relabelled) and
skips PCE files ffmpeg 4.2 marks as stereo, which FilmCraft reads as two
channels.
2026-10-29 17:52:57 -04:00
bflatasticandClaude Opus 5.5 8b846ffdf1 Render cache: the soloed-model key reads main's two-argument reads_other_times
#2410's dependency walk for a soloed 3D model was written before
reads_other_times took the effect count; it asks about all effects (None),
as the other walks do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 04:48:42 +07:00
bflatastic 661f95b901 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 04:48:19 +07:00
bflatasticandClaude Opus 5.5 5d764e6473 Timeline: drag effects, masks and shape items to reorder them (#2210)
Dragging an effect's (or mask's, shape item's, text animator's) row in
the Timeline drew a marquee. The row now drags: a line shows where it
lands among its siblings and the drop runs prop.moveGroup (one undo
step); Escape cancels, as the layer reorder drag does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 04:36:58 +07:00
BFlat 4682645c3d Merge branch 'main' into fix/text-line-join 2026-10-30 04:33:48 +07:00
BFlat d26ab3b83e Merge pull request #2609 from storytold/fix/qa-sequence-import
Tests: QA scenarios ask for image sequences explicitly
2026-10-30 04:33:27 +07:00
bflatasticandClaude Opus 5.5 fb2fb169dc Effects: padded buffers stay within a pixel budget (#2261)
Effects that grow their buffer (CC Radial Fast Blur, CC Lens, Magnify,
the distorts and blurs) could pad a 20 x 20 layer by 4096 px a side, a
~8200 x 8200 f32 buffer plus its clone. Buf::pad (CPU and GPU) now cuts
the pad so the grown buffer stays within 16 Mpx or four times its own
area, whichever is larger: small layers are bounded at 256 MiB, big
layers still grow as before in practice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 04:32:17 +07:00
bflatasticandClaude Opus 5.5 dc09ba58ae Text: stroke Line Join — Miter, Round or Bevel (#2077)
Text strokes were always drawn with round joins. The document gets a
Line Join (`lineJoin: miter|round|bevel` in layer.setText / newText),
Miter for new text as in After Effects, Round for documents saved before
it so their look is kept. The 2D and Advanced 3D (extruded) text strokes
use it, expressions' style copies carry it, and the Character panel has
Miter / Round / Bevel buttons under the stroke width.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 04:25:27 +07:00
tylerjenningsw 3390e2fff7 Merge remote-tracking branch 'origin/main' into pr1736-avi-backend
# Conflicts:
#	crates/media/src/pool.rs
2026-10-29 17:11:16 -04:00
BFlat f868cc68f3 Merge pull request #1875 from vangel76/rfx-text
Text lays out as in After Effects: box text baseline, right-to-left text, Justify All, animator tracking, per-character 3D rotation
2026-10-30 04:10:22 +07:00