Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ packages/producer/tests/*/output/output.mp4 filter=lfs diff=lfs merge=lfs -text
# Source video clips for regression test fixtures (HDR samples, etc.)
packages/producer/tests/*/src/*.mp4 filter=lfs diff=lfs merge=lfs -text

# Source image assets for regression test fixtures (HDR PNGs, screenshot fixtures, etc.)
packages/producer/tests/*/src/*.png filter=lfs diff=lfs merge=lfs -text

# GitHub Linguist overrides — HTML files are compositions (user content / templates),
# not the framework source. Hide them from the repo language stats so TypeScript,
# which is the actual implementation, surfaces as the dominant language.
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
Expand All @@ -60,6 +62,8 @@ jobs:
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
Expand All @@ -73,6 +77,8 @@ jobs:
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
Expand All @@ -88,6 +94,8 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
Expand All @@ -104,6 +112,8 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
Expand All @@ -119,6 +129,8 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/windows-render.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ jobs:
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.ref }}
lfs: true

- name: Show platform info
shell: pwsh
Expand Down Expand Up @@ -222,6 +223,7 @@ jobs:
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.ref }}
lfs: true

# -----------------------------------------------------------------
# Install FFmpeg so vitest suites that gate on `HAS_FFMPEG`
Expand Down
1 change: 1 addition & 0 deletions packages/engine/src/services/chunkEncoder.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,7 @@ describe("buildEncoderArgs HDR color space", () => {
expect(args[paramIdx + 1]).not.toContain("max-cll");
});


it("strips HDR and tags as SDR/BT.709 when codec=h264 (libx264 has no HDR support)", () => {
// libx264 cannot encode HDR. Rather than emit a "half-HDR" file (BT.2020
// container tags + BT.709 VUI inside the bitstream — confusing to HDR-aware
Expand Down
1 change: 1 addition & 0 deletions packages/engine/src/services/videoFrameExtractor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,7 @@ export async function extractAllVideoFrames(

const hdrInfo = analyzeCompositionHdr(videoColorSpaces);
if (hdrInfo.hasHdr && hdrInfo.dominantTransfer) {

// dominantTransfer is "majority wins" — if a composition mixes PQ and HLG
// sources (rare but legal), the minority transfer's videos get converted
// with the wrong curve. We treat this as caller-error: a single composition
Expand Down
Binary file modified packages/producer/tests/hdr-regression/src/hdr-photo-pq.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading