Skip to content

Native MF capture fails after immediate HD60 S+ reconnect (0x8007001F) #811

Description

@iamfatness

Observed October 7 during #802 physical qualification on the RTX 4090 desktop, exact native source 1335114, Release core SHA256 91ed770c3f89f53ce4caed6ad71ef4d43d4ddde4a07fbdd620f2958eb82864ba.

An owned development core connected the physical Game Capture HD60 S+ (376f43680a4bb8eb) through native Media Foundation capture, routing it under a unique QA alias. It negotiated NV12 1920x1080@60. After 15 s warm-up, the initial 120 s phase passed sampled source admission and native buffer continuity (7,185 measured Program deliveries, zero measured underruns/deadline misses/sequence gaps/audio loss; two render overruns retained separately).

The harness disconnected and immediately reconnected the same native device in the same core. Negotiation succeeded again, but the first read failed with Camera read failed. hr=0x8007001F. No new camera pixels or admitted epoch appeared during the second phase. Its source judge failed; two native buffer underruns also remain retained. The native transition counter window passed, so those losses must not automatically be assigned to the failed ReadSample call.

Flags: CPU_SOURCE_PREPARATION=1, ISOLATE_MONITORS=1, PROGRAM_BUFFER_FRAMES=2, GPU_CAPTURE=0. No installed app, settings, driver, registry or default changes. Reproducer: maintained scripts/qa/native-i420-capture.py with this native id, --duration 120 --warmup 15 --reconnects 1. Raw samples, stderr, reports and binary/hardware manifest are preserved locally in artifacts/uvc-preparation-802-133-physical and artifacts/uvc-preparation-802-133-manifest.json.

Attribution remains unconfirmed: compare default-off preparation and a matched baseline before calling this a regression. The capture failure precedes preparation admission; GPU completion identity cannot repair missing CPU arrivals. Do not add an arbitrary reconnect delay, suppress the error or claim recovery. The source reader normally shuts down its source on release (Microsoft documentation); missing explicit Shutdown alone is not a demonstrated root cause.

Done when: attributable control/candidate lifecycle evidence identifies the failing native capture boundary, a focused repair preserves prompt teardown and bounded ownership, repeated immediate reconnects produce new frames/epochs without native delivery or A/V loss, and installed physical capture acceptance passes. Unranked intake; does not independently preempt #802.

Activity

  1. iamfatness commented on Oct 7, 2026

    @iamfatness
    OwnerAuthor

    The same immediate-reconnect failure reproduces with CPU preparation disabled on the candidate and on the installed October 5 beta 77bac0c (core SHA256 A0F1E91D9D3041F01975CC6DE72A69DBEA7BEE8BC3916E961F58764771F7F5F0). Both negotiate NV12 1920x1080@60, run the initial source, then return 0x8007001F before the first frame after reconnect. This rules out attributing the observed source-open failure to the newly enabled preparation path. It does not identify the driver/teardown root cause or qualify recovery.

    Preserved controls: artifacts/uvc-reconnect-811-default-off and artifacts/uvc-reconnect-811-installed-baseline. The installed control was an owned headless native-core process using the installed binary; it did not modify installed files, settings, registration or defaults and is not full shell/receiver acceptance.

    The first harness version incorrectly returned a global PASS for its preparation-off control because the GPU admission judge was NOT_REQUESTED and it scored only Program delivery. The raw error and missing source remain preserved. Independent CPU ingress audit marks phase 0 PASS and phase 1 FAIL. The maintained harness now requires progressing 1080p native input counters even with preparation off, with negative tests for missing/frozen/unknown/failed input. The original report is not overwritten.

    The two native buffer underruns in the enabled reconnect run first appear around Program slot 12633, roughly 75 seconds after the camera read failed; log stage=publish current=0 expired=1 optional_export_on_delivery=0 locates a separate delivery-clock expiration. No claim assigns that later loss to the camera error. The initial enabled 120-second phase delivered 7,185 measured packets without native loss; overall reconnect/release qualification remains FAIL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogRanked in docs/BACKLOG.md

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions