Skip to content

Commit 666aae7

Browse files
committed
Updated README
1 parent 872102f commit 666aae7

1 file changed

Lines changed: 42 additions & 15 deletions

File tree

README.md

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
# Corridor Key Toolbox
22

3-
An FxPlug4 plug-in for Final Cut Pro that ports [CorridorKey](https://github.com/nikopueringer/CorridorKey)'s AI green-screen keying to Apple Silicon.
3+
**Corridor Key Toolbox** is an Motion Template that brings [CorridorKey](https://github.com/nikopueringer/CorridorKey)'s keying power to Final Cut Pro.
4+
5+
Niko explains:
6+
7+
> When you film something against a green screen, the edges of your subject inevitably blend with the green background. This creates pixels that are a mix of your subject's color and the green screen's color. Traditional keyers struggle to untangle these colors, forcing you to spend hours building complex edge mattes or manually rotoscoping. Even modern "AI Roto" solutions typically output a harsh binary mask, completely destroying the delicate, semi-transparent pixels needed for a realistic composite.
8+
>
9+
> I built CorridorKey to solve this *unmixing* problem.
10+
>
11+
> You input a raw green screen frame, and the neural network completely separates the foreground object from the green screen. For every single pixel, even the highly transparent ones like motion blur or out-of-focus edges, the model predicts the true, un-multiplied straight color of the foreground element, alongside a clean, linear alpha channel. It doesn't just guess what is opaque and what is transparent; it actively reconstructs the color of the foreground object as if the green screen was never there.
12+
>
13+
> No more fighting with garbage mattes or agonizing over "core" vs "edge" keys. Give CorridorKey a hint of what you want, and it separates the light for you.
414
515
---
616

717
## Targets
818

9-
| Target | Product | Role |
10-
| --------------------------- | ----------------------------------- | -------------------------------------------------------------------- |
19+
| Target | Product | Role |
20+
| ------------------------------- | --------------------------------------- | -------------------------------------------------------------------- |
1121
| `Corridor Key Toolbox` | `Corridor Key Toolbox.app` | Wrapper application required for App Store packaging and discovery. |
1222
| `Corridor Key Toolbox Renderer` | `Corridor Key Toolbox.pluginkit` (XPC) | The actual FxPlug plug-in Final Cut Pro loads into its plug-in host. |
1323

@@ -19,14 +29,14 @@ The wrapper embeds the XPC service inside its `Contents/PlugIns` directory, so a
1929

2030
```
2131
Source/
22-
├── CorridorKeyPro.xcodeproj
32+
├── CorridorKeyToolbox.xcodeproj
2333
├── Configuration/
2434
│ └── Shared.xcconfig # Shared build settings
25-
├── CorridorKeyPro/
35+
├── CorridorKeyToolbox/
2636
│ ├── Plugin/
2737
│ │ ├── main.swift # XPC entry point
28-
│ │ ├── CorridorKeyProPlugIn.swift
29-
│ │ ├── CorridorKeyProPlugIn+*.swift (protocol slices)
38+
│ │ ├── CorridorKeyToolboxPlugIn.swift
39+
│ │ ├── CorridorKeyToolboxPlugIn+*.swift (protocol slices)
3040
│ │ ├── Parameters/ # Identifiers, enums, state, UI
3141
│ │ ├── Render/
3242
│ │ │ └── RenderPipeline.swift
@@ -42,12 +52,12 @@ Source/
4252
│ │ │ └── ScreenColorEstimator.swift
4353
│ │ ├── Shared/
4454
│ │ │ ├── CorridorKeyShaderTypes.h
45-
│ │ │ └── CorridorKeyPro-Bridging-Header.h
55+
│ │ │ └── CorridorKeyToolbox-Bridging-Header.h
4656
│ │ ├── Resources/en.lproj/InfoPlist.strings
4757
│ │ ├── Info.plist
48-
│ │ └── CorridorKeyPro.entitlements
58+
│ │ └── CorridorKeyToolbox.entitlements
4959
│ └── WrapperApp/
50-
│ ├── CorridorKeyProApp.swift # SwiftUI app entry point
60+
│ ├── CorridorKeyToolboxApp.swift # SwiftUI app entry point
5161
│ ├── WelcomeView.swift
5262
│ ├── Info.plist
5363
│ ├── WrapperApp.entitlements
@@ -58,13 +68,13 @@ Source/
5868

5969
## Architecture overview
6070

61-
1. **FxPlug integration**`CorridorKeyProPlugIn` conforms to both
71+
1. **FxPlug integration**`CorridorKeyToolboxPlugIn` conforms to both
6272
`FxTileableEffect` (render callbacks) and `FxAnalyzer` (pre-render analysis).
6373
Extensions split the class so each protocol responsibility lives in a
6474
dedicated file.
6575
2. **Parameter layer**`ParameterIdentifiers.swift` assigns every UI control
66-
a stable identifier. `CorridorKeyProPlugIn+Parameters.swift` builds the
67-
inspector; `CorridorKeyProPlugIn+PluginState.swift` reads those values into
76+
a stable identifier. `CorridorKeyToolboxPlugIn+Parameters.swift` builds the
77+
inspector; `CorridorKeyToolboxPlugIn+PluginState.swift` reads those values into
6878
a `PluginStateData` snapshot that the renderer owns for the duration of a
6979
tile render.
7080
3. **Render pipeline**`RenderPipeline` orchestrates the per-frame Metal
@@ -86,7 +96,9 @@ Source/
8696

8797
## Building
8898

89-
Open `CorridorKeyPro.xcodeproj` in Xcode and build the `Corridor Key Toolbox` scheme. On first open Xcode will resolve the `mlx-swift` Swift package; this takes ~30 seconds over a cold network and is cached thereafter.
99+
Open `CorridorKeyToolbox.xcodeproj` in Xcode and build the `Corridor Key Toolbox` scheme.
100+
101+
On first open Xcode will resolve the `mlx-swift` Swift package; this takes ~30 seconds over a cold network and is cached thereafter.
90102

91103
---
92104

@@ -95,4 +107,19 @@ Open `CorridorKeyPro.xcodeproj` in Xcode and build the `Corridor Key Toolbox` sc
95107
- Swift 6 with complete strict-concurrency enabled.
96108
- Only first-party Apple + `mlx-swift` dependencies.
97109
- All pixel maths in Metal compute shaders; the CPU side stays on the coordination hot path.
98-
- Parameter identifiers are never renumbered: add new controls, never move existing ones.
110+
- Parameter identifiers are never renumbered: add new controls, never move existing ones.
111+
112+
---
113+
114+
## Acknowledgements
115+
116+
Corridor Key Toolbox would NOT be possible without Niko's amazing [Corridor Key](https://github.com/nikopueringer/CorridorKey).
117+
118+
Niko's Corridor Key repo integrates several open-source modules for Alpha Hint generation.
119+
120+
We would like to also explicitly credit and thank the following research teams:
121+
122+
- **Generative Video Matting (GVM):** Developed by the Advanced Intelligent Machines (AIM) research team at Zhejiang University. The GVM code and models are heavily utilized in the `gvm_core` module. Their work is licensed under the [2-clause BSD License (BSD-2-Clause)](https://opensource.org/license/bsd-2-clause). You can find their source repository here: [aim-uofa/GVM](https://github.com/aim-uofa/GVM). Give them a star!
123+
- **VideoMaMa:** Developed by the CVLAB at KAIST. The VideoMaMa architecture is utilized within the `VideoMaMaInferenceModule`. Their code is released under the [Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0)](https://creativecommons.org/licenses/by-nc/4.0/), and their specific foundation model checkpoints (`dino_projection_mlp.pth`, `unet/*`) are subject to the [Stability AI Community License](https://stability.ai/license). You can find their source repository here: [cvlab-kaist/VideoMaMa](https://github.com/cvlab-kaist/VideoMaMa). Give them a star!
124+
125+
By using these optional modules, you agree to abide by their respective Non-Commercial licenses. Please review their repositories for full terms.

0 commit comments

Comments
 (0)