mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 12:54:29 +00:00
fix(producer,cli): round the fallback dB consistently, thread the verify threshold through
Review feedback on #2411 (Rames): the crash-survival RenderCaptureObservability mirror passed deFallbackFailedDb raw/unrounded while the render_complete perfSummary path rounded to 1 decimal — the same underlying PSNR could ship two different values to PostHog depending on which event fired. Extracted the existing inline round/clamp expression (previously duplicated for verifyMinDb and fallbackFailedDb) into a shared roundDb helper, applied once at the single point deFallbackFailedDb is derived from the thrown error so both downstream consumers agree. Also threads verifyThresholdDb (captured on the error but never propagated, per the nit) through DrawElementPerfInput/RenderCaptureObservability/render.ts/ telemetry as de_fallback_threshold_db on both events — the HF_DE_VERIFY_MIN_DB value the failing dB breached, letting ops read "28.4dB failed a 32dB threshold" directly instead of cross-referencing config.
This commit is contained in:
@@ -2066,6 +2066,7 @@ function trackRenderMetrics(
|
||||
deFallbackReason: perf?.drawElement?.fallbackReason,
|
||||
deFallbackFailedDb: perf?.drawElement?.fallbackFailedDb,
|
||||
deFallbackFrameIndex: perf?.drawElement?.fallbackFrameIndex,
|
||||
deFallbackThresholdDb: perf?.drawElement?.fallbackThresholdDb,
|
||||
deBlankSuspects: perf?.drawElement?.blankSuspects,
|
||||
deBlankDeterministicAccepts: perf?.drawElement?.blankDeterministicAccepts,
|
||||
deBlankRecaptures: perf?.drawElement?.blankRecaptures,
|
||||
|
||||
@@ -252,7 +252,7 @@ describe("render telemetry events", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("carries the failing dB and frame index on render_error for a psnr fallback that failed hard afterward", () => {
|
||||
it("carries the failing dB, frame index, and threshold on render_error for a psnr fallback that failed hard afterward", () => {
|
||||
trackRenderError({
|
||||
fps: 30,
|
||||
quality: "standard",
|
||||
@@ -263,6 +263,7 @@ describe("render telemetry events", () => {
|
||||
captureDeFallbackReason: "psnr",
|
||||
captureDeFallbackFailedDb: 28.4,
|
||||
captureDeFallbackFrameIndex: 649,
|
||||
captureDeFallbackThresholdDb: 32,
|
||||
});
|
||||
|
||||
expect(trackEvent).toHaveBeenCalledWith(
|
||||
@@ -271,6 +272,7 @@ describe("render telemetry events", () => {
|
||||
de_fallback_reason: "psnr",
|
||||
de_fallback_failed_db: 28.4,
|
||||
de_fallback_frame_index: 649,
|
||||
de_fallback_threshold_db: 32,
|
||||
}),
|
||||
undefined,
|
||||
);
|
||||
@@ -296,7 +298,7 @@ describe("render telemetry events", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("carries the perfSummary-sourced failing dB and frame index on render_complete", () => {
|
||||
it("carries the perfSummary-sourced failing dB, frame index, and threshold on render_complete", () => {
|
||||
trackRenderComplete({
|
||||
durationMs: 1000,
|
||||
fps: 30,
|
||||
@@ -307,6 +309,7 @@ describe("render telemetry events", () => {
|
||||
deFallbackReason: "psnr",
|
||||
deFallbackFailedDb: 28.4,
|
||||
deFallbackFrameIndex: 649,
|
||||
deFallbackThresholdDb: 32,
|
||||
});
|
||||
|
||||
expect(trackEvent).toHaveBeenCalledWith(
|
||||
@@ -315,6 +318,7 @@ describe("render telemetry events", () => {
|
||||
de_fallback_reason: "psnr",
|
||||
de_fallback_failed_db: 28.4,
|
||||
de_fallback_frame_index: 649,
|
||||
de_fallback_threshold_db: 32,
|
||||
}),
|
||||
undefined,
|
||||
);
|
||||
|
||||
@@ -56,6 +56,7 @@ export interface RenderObservabilityTelemetryPayload {
|
||||
captureDeFallbackReason?: string;
|
||||
captureDeFallbackFailedDb?: number;
|
||||
captureDeFallbackFrameIndex?: number;
|
||||
captureDeFallbackThresholdDb?: number;
|
||||
/** Non-DE parallel-streaming router outcome ("screenshot" | "beginframe" —
|
||||
* routed; "eligible_off" — would route but the kill switch is off). */
|
||||
captureParallelStream?: string;
|
||||
@@ -112,6 +113,7 @@ function renderObservabilityEventProperties(props: RenderObservabilityTelemetryP
|
||||
de_fallback_reason: props.captureDeFallbackReason,
|
||||
de_fallback_failed_db: props.captureDeFallbackFailedDb,
|
||||
de_fallback_frame_index: props.captureDeFallbackFrameIndex,
|
||||
de_fallback_threshold_db: props.captureDeFallbackThresholdDb,
|
||||
capture_parallel_stream: props.captureParallelStream,
|
||||
observability_extract_video_count: props.observabilityExtractVideoCount,
|
||||
observability_extracted_video_count: props.observabilityExtractedVideoCount,
|
||||
@@ -179,6 +181,7 @@ export function trackRenderComplete(
|
||||
deFallbackReason?: string;
|
||||
deFallbackFailedDb?: number;
|
||||
deFallbackFrameIndex?: number;
|
||||
deFallbackThresholdDb?: number;
|
||||
deBlankSuspects?: number;
|
||||
deBlankDeterministicAccepts?: number;
|
||||
deBlankRecaptures?: number;
|
||||
@@ -268,6 +271,7 @@ export function trackRenderComplete(
|
||||
de_fallback_reason: props.deFallbackReason,
|
||||
de_fallback_failed_db: props.deFallbackFailedDb,
|
||||
de_fallback_frame_index: props.deFallbackFrameIndex,
|
||||
de_fallback_threshold_db: props.deFallbackThresholdDb,
|
||||
de_blank_suspects: props.deBlankSuspects,
|
||||
de_blank_deterministic_accepts: props.deBlankDeterministicAccepts,
|
||||
de_blank_recaptures: props.deBlankRecaptures,
|
||||
|
||||
@@ -82,25 +82,28 @@ describe("renderObservabilityTelemetryPayload — DE inversion/router cohort (fa
|
||||
expect(payload.captureDeFallbackReason).toBeUndefined();
|
||||
});
|
||||
|
||||
it("carries the failing dB and frame index for a psnr fallback, still visible on a hard failure", () => {
|
||||
it("carries the failing dB, frame index, and threshold for a psnr fallback, still visible on a hard failure", () => {
|
||||
const payload = renderObservabilityTelemetryPayload(
|
||||
makeSummary({
|
||||
deParallelRouter: "routed",
|
||||
deFallbackReason: "psnr",
|
||||
deFallbackFailedDb: 28.4,
|
||||
deFallbackFrameIndex: 649,
|
||||
deFallbackThresholdDb: 32,
|
||||
}),
|
||||
);
|
||||
expect(payload.captureDeFallbackFailedDb).toBe(28.4);
|
||||
expect(payload.captureDeFallbackFrameIndex).toBe(649);
|
||||
expect(payload.captureDeFallbackThresholdDb).toBe(32);
|
||||
});
|
||||
|
||||
it("leaves failedDb undefined for a blank/oom/capture_error fallback (no PSNR score exists)", () => {
|
||||
it("leaves failedDb/thresholdDb undefined for a blank/oom/capture_error fallback (no PSNR score exists)", () => {
|
||||
const payload = renderObservabilityTelemetryPayload(
|
||||
makeSummary({ deFallbackReason: "oom", deFallbackFrameIndex: undefined }),
|
||||
);
|
||||
expect(payload.captureDeFallbackFailedDb).toBeUndefined();
|
||||
expect(payload.captureDeFallbackFrameIndex).toBeUndefined();
|
||||
expect(payload.captureDeFallbackThresholdDb).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ export function renderObservabilityTelemetryPayload(
|
||||
captureDeFallbackReason: capture.deFallbackReason,
|
||||
captureDeFallbackFailedDb: capture.deFallbackFailedDb,
|
||||
captureDeFallbackFrameIndex: capture.deFallbackFrameIndex,
|
||||
captureDeFallbackThresholdDb: capture.deFallbackThresholdDb,
|
||||
captureParallelStream: capture.captureParallelStream,
|
||||
observabilityExtractVideoCount: extraction?.videoCount,
|
||||
observabilityExtractedVideoCount: extraction?.extractedVideoCount,
|
||||
|
||||
Reference in New Issue
Block a user