github storytold/filmcraft v0.16.0
FilmCraft v0.16.0

4 hours ago

What's Changed

  • Updates: shared check-result dialog from craft-update by @aiongg in #3756
  • docs: tidy agent, contributor and asset docs by @aiongg in #3755
  • Integration: backlog round r1 (244 PRs) by @aiongg in #3746
  • Keep a clip's transitions when copying and pasting it by @Silvertree2010 in #3473
  • fix(export): a failed encoder factory does not stop the next one (#936) by @ComfyChloe in #3475
  • fix(#issue3): loop button highlights when looping is active by @dknalp in #3486
  • docs(#2645): document numpad key limitation and workarounds in keyboard.md by @dknalp in #3516
  • Tests: split the NVENC error test so clippy's complexity limit passes on Windows by @dotCooCoo in #3566
  • Platform: the macOS and Windows encode tests build again by @marshiyar in #3580
  • Trim: a graphic, still or adjustment layer extends from its left edge by @marshiyar in #3582
  • Timeline: the box selection stays on the clips while the view scrolls by @marshiyar in #3583
  • Timeline: double-clicking a marker opens an Edit Marker dialog by @marshiyar in #3585
  • media-browser: list AAF and OMF documents, which File ▸ Import already reads by @noesis-bot in #3615
  • Preserve multiline WebVTT cue identifiers by @TheGalitube in #3664
  • Reject out-of-range EBU STL timecodes by @TheGalitube in #3665
  • ogg: charge bad-CRC page reads to the recovery budget by @marshiyar in #3681
  • platform: macOS test fixes (boxed MediaClip, HEVC probe test in its own binary) by @kler in #3683
  • Render Effects In to Out renders only red segments, like Premiere (#1220) by @kler in #3684
  • ProRes encoder: rate control starts from the previous frame's quantiser, 2x faster 4K encode (#1220) by @kler in #3685
  • Graphics: document what Responsive Design – Time remaps by @marshiyar in #3690
  • Panels: a floating panel's menu opens in its own window by @marshiyar in #3693
  • Color: add a Three-Way Color Corrector by @marshiyar in #3695
  • Effects panel: Set as Default Transition by @marshiyar in #3696
  • Graphics: gradient stops can carry opacity by @marshiyar in #3701
  • UI: Thai fallback font for file and clip names by @marshiyar in #3702
  • Select the whole value when a single-line text field gains focus (#3655) by @MarekSpodBiedry in #3707
  • docs: transcripts: word bounds are only moved across pauses by @tdog37 in #3718
  • Export: background jobs read their own copy of each file, so playback keeps its decoder by @kler in #3723
  • Media: the per-frame growing-files check no longer lists every media file by @kler in #3729
  • ime: read the viewport id outside the context lock by @marshiyar in #3731
  • tests: a_single_frame_source_range waits for the wall clock instead of racing it by @marshiyar in #3733
  • fix(av1): turn a frame worker panic into a decoding error instead of a hang by @vangel76 in #3109
  • perf(av1): drop redundant whole-frame copies in Plane::clone and the output path by @vangel76 in #3117
  • refactor(av1): narrow the public header API to what crates/codecs uses by @vangel76 in #3122
  • audio-dsp: step the resampler's source position instead of dividing per sample by @vangel76 in #3138
  • audio-dsp: wrap LFO phases and delay-line indices without modulo by @vangel76 in #3139
  • audio-dsp: vectorisable true-peak interpolator by @vangel76 in #3140
  • audio-dsp: defer convolution reverb impulse rebuild to process by @vangel76 in #3141
  • audio-dsp: faster FFT kernel (contiguous twiddles, cheaper first stage) by @vangel76 in #3142
  • audio-dsp: cheaper gain math in the dynamics effects by @vangel76 in #3143
  • audio-dsp: recover filter state after a NaN or infinite input sample by @vangel76 in #3144
  • audio-dsp: one sin_cos per peak region in the pitch shifter by @vangel76 in #3146
  • h264: implicit 32/32 bi-prediction weights as the rounded average by @vangel76 in #3167
  • h264: cheaper deblocking boundary-strength derivation by @vangel76 in #3168
  • hevc: table-driven intra availability by @vangel76 in #3182
  • h264: const-generic MC kernels, i16 first pass, inline window row copy by @vangel76 in #3183
  • hevc: SAO border lines through the vectorised edge run by @vangel76 in #3185
  • hevc: motion compensation without 71-entry slice arrays per call by @vangel76 in #3186
  • hevc: even/odd butterfly for the 8..32-point inverse DCT by @vangel76 in #3187
  • hevc: intra planar/angular with const size and hoisted branches by @vangel76 in #3189
  • h264enc: SATD on the half-pel plane, const sad8, fixed-size MC by @vangel76 in #3204
  • h264enc: byte-wise CABAC renormalisation by @vangel76 in #3206
  • h264enc: branch-free u32 quantisation by @vangel76 in #3208
  • matroska: preserve PTS semantics in the lacing oracle by @KeroZelvin in #3225
  • Preserve Unicode names in graphics template export identities by @jnohclee-rgb in #3245
  • Preserve Reverse Speed when reopening the clip dialog by @jnohclee-rgb in #3247
  • Settings: Selection Follows Playhead persists across restarts by @amoisttowe1 in #3251
  • platform: VideoToolbox export takes the RGBA pictures and converts them itself (#3030) by @ZJHeepfixer in #3255
  • aac: memoise the encoder's per-band work across rate-loop iterations (2.4x faster, output identical) by @vangel76 in #3264
  • aac: faster decoder (Huffman lookup table, FFT twiddles and stage fusion, scratch buffers; PCM identical) by @vangel76 in #3271
  • Opus decoder: radix-2/3/4 FFT kernels in the CELT IMDCT by @vangel76 in #3272
  • Opus decoder: build the PVQ V(n,k) table once by @vangel76 in #3273
  • mxf writer: write pictures directly, sound read cursor instead of front drain by @vangel76 in #3274
  • Opus decoder: de-emphasis for both channels in one loop by @vangel76 in #3275
  • mxf: faster decode_pcm, AES3 read_pcm no longer decodes the whole element per call by @vangel76 in #3276
  • Opus decoder: faster SILK output resampler by @vangel76 in #3277
  • mxf: adaptive read window while walking KLVs at open (reads 8x less for intra files) by @vangel76 in #3279
  • Opus decoder: cap concealment and FEC length at 120 ms by @vangel76 in #3280
  • vp9: inter prediction across a band boundary without the window copy by @vangel76 in #3295
  • vp9: token loop monomorphised on counting, cheaper sign read by @vangel76 in #3296
  • #2633: a press on the ruler closes no audio stream, and the default r… by @XIILO in #3308
  • Select All in a text field selects its text, not the timeline clips by @punkhop in #3328
  • test: wait for the condition in two timing-sensitive tests by @sarayunova in #3352
  • codecs: the rayon deadlock test fails 120 s after the last answered request by @dotCooCoo in #3376
  • #3357: caption track font style by @evillollive in #3389
  • timeline: Track Select Forward/Backward selects and moves the captions with the clips (#3388) by @x-labb in #3407
  • Use default interpolation for keyframes added before the first by @Silvertree2010 in #3434
  • lumetri: a plain click places a point on the curve (#3431) by @rahul05ranjan in #3435
  • i18n(fr): translate the 8 interface strings still in English by @SevenxDev in #3446
  • captions: reject unparseable MCC timecode fields by @SevenxDev in #3461
  • interchange: reject overflowing EDL fields without leaking event metadata by @SevenxDev in #3462
  • Properties: the arrow keys move the caret in a number field (#3372) by @Kathir-D in #3481
  • fix(sequence): clamp a new transition's duration to what its cut supports by @rahul05ranjan in #3483
  • Select names when renaming project items and bins by @TheGalitube in #3667
  • h264enc: pay back single-pass VBR/CBR overshoot within a short clip by @marshiyar in #3691
  • fix(engine): timeline.slip by i64::MIN clamps instead of overflowing by @inspiretelapps in #2365
  • Read currency amounts with a scale word as scale then unit by @Silvertree2010 in #2381
  • #1422: Matroska audio without a decoder is labelled unsupported by @Felix-Helleckes in #2391
  • #1123: Effect Controls' LUT rows pick a LUT by @Felix-Helleckes in #2393
  • #579: a middle-button drag pans the Freeform canvas by @Felix-Helleckes in #2396
  • #2195: relative media URLs in imported timelines are percent-decoded by @Felix-Helleckes in #2403
  • #1758: every Audio Track Mixer insert can be edited by @Felix-Helleckes in #2404
  • #1658: Lumetri curves grow with the panel and every inner point can be removed by @Felix-Helleckes in #2408
  • #1265: the demo project's sound has no hiss by @Felix-Helleckes in #2409
  • fix(tts-text): a currency amount past the digit cap is read digit by digit by @GabrielMatozo in #2410
  • #1822: a Vertical workspace for 9:16 editing by @Felix-Helleckes in #2412
  • #2402: Transcribe is shown disabled when the build has no speech-to-text by @Felix-Helleckes in #2413
  • fix(export): a bitrateKbps in settings is the bitrate over an adaptive preset by @derektrimm in #2432
  • #2211: Quit ▸ Save on a new project saves and quits when the dialog answers later by @Felix-Helleckes in #2437
  • #1142: no 60 Hz polling for queued frames, no media file list every frame by @Felix-Helleckes in #2438
  • #2211: Export Frame shows why an export failed, and saves new projects' stills home by @Felix-Helleckes in #2446
  • #2416: Edit Marker dialog (name, comment, duration, colour, type) by @Felix-Helleckes in #2470
  • GPU: bound export read-back waits by @jahvari in #2490
  • Tests: render video in export fixtures and cover nested transforms by @jackcanon in #2505
  • Fix tooltips showing stale default shortcuts after keybinding changes by @usermrpj in #2513
  • fix(timeline): a press hits only the track rows of its own pane when tracks are scrolled by @4waymedia in #2533
  • ui: zoom scroll bar handles show the horizontal resize cursor by @danielbanariba in #2546
  • #2295: the status bar's text can be selected and copied by @ksaxena149 in #2559
  • FilmcraftApp::toast is gone; engine toasts reach the status bar (#2443) by @rahul05ranjan in #2568
  • test: handle concurrent fixture publication on Windows by @jahvari in #2587
  • Export: the Frame Rate list offers 119.88 and 120 by @keigoly in #2611
  • Clip Mismatch Warning: a first clip that doesn't match an empty sequence asks by @keigoly in #2612
  • #2623: Sequence and Markers menu toggles show their checkmark by @storybored379 in #2640
  • Settings and Edit ▸ Language: list the languages alphabetically by their own name by @nikolainyegaard in #2658
  • #2419: Bokeh Blur runs on the GPU by @ded-achtung in #2660
  • #1673: the Program monitor keeps playing while a value is dragged by @ded-achtung in #2666
  • Project panel, Media Browser: a dragged column width or thumbnail size is written to preferences.json by @marcoarnulfo in #2673
  • Lumetri: Luma vs Sat and Sat vs Sat stop wrapping; hue curves meet exactly at red by @alexanderalber in #2699
  • #2489: an imported shortcut set is always listed; .kys files explain why they can't be read by @Felix-Helleckes in #2705
  • #2682: Lumetri curves get automation elements; regression test for curve undo/redo by @Felix-Helleckes in #2710
  • Link Media: Offline All is saved, so reopening the project doesn't ask again by @texjer in #2738
  • #2749: Export starts on Source In/Out when the sequence has In/Out marks by @Felix-Helleckes in #2768
  • Span workspace dropdown highlights full width by @justacalico in #2829
  • codecs: prevent 32-bit length overflows (#2801) by @thecyberbutler in #2842
  • fix(interchange): bound subclip parent resolution to prevent cycle stack overflow by @justdxvid in #2847
  • edit: ripple sync-locked captions with deleted items (#2873) by @jnohclee-rgb in #2921
  • fix(captions): VTT parse decodes the writer's cue-text arrow escape (#2066) by @rollroyces in #2974
  • Recovery: retain durable journals and contain autosave worker failures by @jahvari in #2984
  • Fix FCPXML slideshow imports and missing-media relinking (#2837) by @thecyberbutler in #3052
  • gpu: export on the high-performance GPU, and read staging memory in bulk by @Exalted5373 in #3053
  • frame: convert full-size 8-bit Y'CbCr row by row, 28 % faster and bit-identical by @Exalted5373 in #3066
  • docs(platform): update FFI architecture decision to match implementation (#2814) by @Zaxaerith in #3093
  • Font pickers scan the system fonts before taking the family list by @marcoarnulfo in #3119
  • perf(av1): inverse DCT with compile-time size and a DC-only path by @vangel76 in #3120
  • perf(av1): cheaper dequantisation per transform block by @vangel76 in #3121
  • audio-dsp: filter channel pairs together in the settled EQ cascade by @vangel76 in #3136
  • audio-dsp: remix analysis with sparse mel weights and precomputed norms by @vangel76 in #3137
  • perf(h264): DC-only inverse transform for blocks without AC coefficients by @vangel76 in #3179
  • h264: Decoder::reset keeps the thread pool and cancels in-flight pictures by @vangel76 in #3181
  • fix(codecs): read the frame rate phone clips average to (#1700) by @earlvanze in #1829
  • #1831: proxy and transcode jobs run one at a time, in the order they were asked for by @Guilhermeb-Ferrarezi in #1864
  • perf: Warp Stabilizer works out the corrections of a clip once per set of settings by @Guilhermeb-Ferrarezi in #1866
  • effects.apply adds the effect at the end of the clip's stack, so existing effect indices stay valid by @marcoarnulfo in #1883
  • voice-over: the Mixer's input meter follows the microphone while recording by @jack-pardal in #1891
  • #1877: graphics.set can put keyframes on the properties it sets by @Guilhermeb-Ferrarezi in #1899
  • #1885: Proxy ▸ Create Proxies… from the item menu takes the whole selection by @Guilhermeb-Ferrarezi in #1902
  • Effect Controls: the keyframe menu's interpolation applies to every selected keyframe by @marcoarnulfo in #1924
  • i18n: Swedish (sv) interface translation by @kler in #1930
  • render: Transform with its own shutter angle stays on the CPU (the GPU path dropped its motion blur) by @schnierk in #1957
  • #1910: Interpret Footage from the item menu takes the whole selection by @vangel76 in #1960
  • enhancement: Program monitor shows the motion path of a clip's animated Position by @aw4e in #1970
  • i18n: clarify 11 Korean editing terms by @kangyou04 in #1992
  • fix: satisfy clippy::nonminimal_bool on Rust 1.96 by @ssandweiss in #2007
  • fix(macos): Edit menu copy and paste go to the graphic text being edited (#1953) by @ssandweiss in #2010
  • Properties: with text selected, the character controls show the selection's style (#1996) by @wstock in #2015
  • Project panel: cut long bin/clip names with "…" and show them on hover by @LloydNicholson in #2034
  • Project panel: make the Up one level button legible by @LloydNicholson in #2035
  • Import: EDL / FCP7 XML / FCPXML / OTIO / AAF / OMF land in the Project panel's current bin (#2036) by @switch87 in #2038
  • codecs: an ipcm/fpcm entry declaring zero bits decodes to silence by @midasmatterhorn in #2047
  • project: a moved auto point counts as modified by @midasmatterhorn in #2050
  • fix(ui): Clip > Rename… opens a rename dialog by @ssandweiss in #2088
  • fix(ui): Close All Projects asks to save unsaved changes by @ssandweiss in #2089
  • #776: Corner Pin gets corner handles on the Program monitor by @ruck-syu in #2100
  • fix(engine): enable Reveal Nested and Join Through Edits only when they can act (#2103) by @ssandweiss in #2104
  • fix(ui): disable the Project panel's Clear and Automate buttons with nothing selected (#2106) by @ssandweiss in #2108
  • feat(media): import PSD files as their flattened composite (Merge All Layers) by @marcoarnulfo in #2116
  • Ignore unusable M2 speeds in EDL import by @Silvertree2010 in #2127
  • #1903: timeline.move refuses a clip listed twice (it left one clip id on two tracks) by @00xJS in #2132
  • #2024: dialog commands the engine defaults can be bound to a key by @txiki739 in #2136
  • fix(gpu): FXC compiles the effect stage, so DX12 keeps GPU effects (#1616, #1425, #1458) by @derektrimm in #2138
  • fix(gpu): Intel Gen 9 to Gen 11 integrated graphics draw through DirectX 12 (#512, #1425) by @derektrimm in #2139
  • fix(timeline): preview every track a Project drop fills (#1887) by @ssandweiss in #2151
  • #2094: the Lumetri shadow lift no longer amplifies near-black chroma into blue specks by @00xJS in #2153
  • fix(timeline): snap moved and trimmed captions like clips by @marcoarnulfo in #2197
  • fix: make clip duration editable in Speed/Duration dialog by @aqibmohd271 in #2202
  • fix(timeline): Track Select tools skip locked tracks (#2223) by @MarekSpodBiedry in #2232
  • Clarify the first-launch demo project name by @TheGalitube in #2240
  • Read every digit of numbers longer than 20 digits individually by @Silvertree2010 in #2247
  • Ignore out-of-range AUD channels in EDL import by @Silvertree2010 in #2248
  • fix(interchange): FCPXML zero frameDuration no longer divides by zero on export by @Wbunker in #2252
  • fix(interchange): absurd frame rates and start timecodes are bounded on import by @Wbunker in #2282
  • fix(interchange): a huge duration times a speed saturates instead of overflowing by @Wbunker in #2284
  • i18n: Russian covers the whole interface by @ivandrozdov1505-coder in #2288
  • AVI: recover the video when its idx1 entries are damaged by @tylerjenningsw in #2302
  • Stop voice-over when input device fails (#2215) by @TheGalitube in #2314
  • fix(ui): open Speed/Duration from the Properties speed footer by @gyroninja in #2315
  • i18n: Turkish (tr) interface catalog (#1377) by @MOzcelik14 in #2344
  • fix(hevc tests): skip Main10 fixtures an 8-bit-only libx265 cannot encode by @adventurelands in #2372
  • #2375: the NVENC SDR sample entry test expects the BT.709 colr since #2142 by @Felix-Helleckes in #2386
  • #1878: list fonts activated through Adobe Fonts by @Felix-Helleckes in #2389
  • fix: シーケンス配置時の自動文字起こしを実行 #903 by @haranishi in #1118
  • fix(media-browser): don't freeze the UI while probing files by @ossini in #1406
  • #1411: docs/gaps.md: remove entries for features that already shipped by @vangel76 in #1412
  • #1418: parity docs: correct entries outdated by merged work by @vangel76 in #1419
  • #1421: roadmap.md and gaps.md G14: mark shipped codecs and languages as done by @vangel76 in #1423
  • #1436: mpegts: H.264/HEVC units are access units; H.264 recovery points are key by @vangel76 in #1440
  • fix(control): sequence.settings without params reports the settings instead of opening a dialog by @marcoarnulfo in #1555
  • timeline, panels: only the primary button starts a gesture; a right-button drag no longer draws a box by @ReReddo in #1597
  • timeline: zooming out stops where the whole Timeline is in view by @ReReddo in #1598
  • tools: the Tools panel lays its buttons out along its longer side and wraps by @ReReddo in #1600
  • widgets: the text of a search field is centred vertically in it by @ReReddo in #1610
  • timeline: snap transition drops to Start/Center/End at Cut by @gyroninja in #1613
  • #1583: still images honour EXIF Orientation by @AndreaGhidara in #1617
  • timeline: preview carried transitions on the track they land on by @gyroninja in #1619
  • timeline: drop transitions when an edit moves their clips apart by @gyroninja in #1623
  • timeline: right-clicking the ruler opens the ruler's menu, not a stale clip menu by @ReReddo in #1628
  • timeline: a track header's context menu adds and deletes tracks by @ReReddo in #1630
  • timeline: a transition on a compact track fills the track's height by @ReReddo in #1636
  • timeline: Show Video Names and Show Audio Names hide the clip names of video or audio tracks by @ReReddo in #1637
  • timeline: the waveform fills the clip on a compact audio track by @ReReddo in #1638
  • ui: highlight selected items in the project bin (#1445) by @bfenty in #1647
  • scrub bars: dragging the playhead keeps the audio stream open instead of stopping it every move by @ReReddo in #1649
  • menus: the Timeline and monitor settings menus stay open while options are toggled by @ReReddo in #1650
  • ui: keep the waveform anchored while a remix drag previews (#1424) by @bfenty in #1654
  • #1644: save dialogs add the file's extension and ask before replacing what that names by @txiki739 in #1679
  • fix(linux): add an "All files" filter to the Open Project dialog (#1644) by @saadkhantareen in #1693
  • mpegts/avi: drop redundant PES header check and doubled frame_info call by @vangel76 in #1707
  • cfb: reject NUL in entry names, checked sector arithmetic, allocation-free name compare by @vangel76 in #1718
  • Effect Controls: the keyframe right-click menu follows Premiere's rows and order by @marcoarnulfo in #1760
  • Project panel: Select All / Deselect All from the macOS menu act on the focused panel with a sequence open by @marcoarnulfo in #1765
  • Help menu: hints open at the cursor and show just the address by @liangforstudy in #1772
  • shortcuts: key names break between words and use the dialog's width by @clickonlab in #1787
  • #1780: the trim cursor stays while an edge is dragged by @marcoarnulfo in #1788
  • Media Browser: list view columns resize by dragging their header's right edge by @marcoarnulfo in #1802
  • Program monitor: Go to Previous / Next Edit Point in the Button Editor, beside the frame steps by @marcoarnulfo in #1806
  • Project panel: Sequence Settings… in a sequence's right-click menu by @marcoarnulfo in #1828
  • fix(codecs): read AC-3/E-AC-3 MP4 layout from dac3/dec3 (#1701) by @earlvanze in #1835
  • #1675: keyframes on a Frame Hold clip go where the playhead is (they all landed on the held frame) by @marcoarnulfo in #1860
  • #1381: the Warp Stabilizer analyses a clip a block of frames at a time by @Guilhermeb-Ferrarezi in #1865
  • packaging(flatpak): add OCI image build and GHCR publishing helper by @dylanmtaylor in #3814
  • ci(xtask): print the i18n report without recompiling the workspace by @FredApps in #3821
  • Add shared custom colors and complete marker editing by @whatever-industries in #1435

New Contributors

Full Changelog: v0.15.0...v0.16.0

Don't miss a new filmcraft release

NewReleases is sending notifications on new releases.