Add full source parity validation workflow
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-07 16:45:07 +08:00
parent a3588d41a3
commit f68c6c9678
59 changed files with 4556 additions and 842 deletions

View File

@@ -15,7 +15,7 @@ import {
type CompositorGraphIR,
type CompositorImageBuffer,
} from "../compositor/CompositorExecutor";
import { createSequencerCodecProbeRequest, probeSequencerCodec } from "../sequencer/SequencerCodecProbe";
import { createSequencerCodecProbeRequest, probeSequencerMovieCodecWithFallback } from "../sequencer/SequencerCodecProbe";
import { generateInitialSequencerMovieProxyFrame, SequencerMediaProxyCache } from "../sequencer/SequencerMediaProxyCache";
export interface RenderCompositorMediaRecoveryInput {
@@ -278,7 +278,7 @@ async function runMediaRecovery(input: RenderCompositorMediaRecoveryInput): Prom
const movie = requireInput(input.movie.data, "movie.data");
const sourceSha256 = await sha256(movie);
const request = createSequencerCodecProbeRequest("MOVIE", input.movie.mimeType, movie.byteLength, sourceSha256);
const capability = await probeSequencerCodec(request, movie.slice(0));
const capability = await probeSequencerMovieCodecWithFallback(request, movie.slice(0));
const profile = { kind: "MOVIE_RGBA8_FRAME" as const, width: 8, height: 8, colorSpace: "SRGB8" as const, alphaMode: "STRAIGHT" as const };
const first = await generateInitialSequencerMovieProxyFrame(request, capability, profile, movie.slice(0));
const identityBefore = first.manifest.identitySha256;
@@ -300,7 +300,7 @@ async function runMediaRecovery(input: RenderCompositorMediaRecoveryInput): Prom
const releasedResources = firstCache.stats().entries;
const releasedBytes = firstCache.clear();
const secondCapability = await probeSequencerCodec(request, movie.slice(0));
const secondCapability = await probeSequencerMovieCodecWithFallback(request, movie.slice(0));
const second = await generateInitialSequencerMovieProxyFrame(request, secondCapability, profile, movie.slice(0));
const secondCache = new SequencerMediaProxyCache(second.data.byteLength);
try {