Found while measuring Task 1 of the #597 stream-backpressure work. Not fixed there — that sub-project is about backpressure, and this is a separate defect in the encoder's rate control.
What was measured
The GPU-direct H.264 path was driven at 1920x1080@60 through the real Media Foundation hardware MFT, counting bytes out of the encoder over a fixed window:
| configured kbps |
bytes out |
measured kbps |
| 10000 |
74,401,369 (599 chunks) |
59,568 |
| 10000 |
74,401,492 (599 chunks) |
59,522 |
| 2000 |
74,247,888 (600 chunks) |
59,366 |
A 5x change in the configured bitrate moved the output by 0.3%. The encoder emits the same bytes either way, at roughly 6x the requested rate.
Why
MediaFoundationGpuVideoEncoder sets MF_MT_AVG_BITRATE on the output media type and never touches CODECAPI_AVEncCommonRateControlMode or CODECAPI_AVEncCommonMeanBitRate. On this hardware the MFT appears to treat the media-type attribute as advisory and runs at its own default quality target.
Why it matters
An operator who configures a 10 Mbps stream gets roughly 59 Mbps on the wire. Any destination provisioned for the configured rate falls behind immediately, which is the shape of the #597 incident even though #597's own root cause was the restart storm. The backpressure work now in flight will mask the symptom by shedding input frames; it does not make the stream honor its configured bitrate.
Rig
RTX 4090, driver 616.92, Windows SDK 10.0.26100. The probe harness lives on branch feat/stream-backpressure behind COREVIDEO_RATE_PROBE_KBPS.
Done when
A configured bitrate is honored within a stated tolerance across at least 2000, 6000 and 10000 kbps, measured as bytes out of the encoder over a fixed window — not by reading back the attribute we set.
Found while measuring Task 1 of the #597 stream-backpressure work. Not fixed there — that sub-project is about backpressure, and this is a separate defect in the encoder's rate control.
What was measured
The GPU-direct H.264 path was driven at 1920x1080@60 through the real Media Foundation hardware MFT, counting bytes out of the encoder over a fixed window:
A 5x change in the configured bitrate moved the output by 0.3%. The encoder emits the same bytes either way, at roughly 6x the requested rate.
Why
MediaFoundationGpuVideoEncodersetsMF_MT_AVG_BITRATEon the output media type and never touchesCODECAPI_AVEncCommonRateControlModeorCODECAPI_AVEncCommonMeanBitRate. On this hardware the MFT appears to treat the media-type attribute as advisory and runs at its own default quality target.Why it matters
An operator who configures a 10 Mbps stream gets roughly 59 Mbps on the wire. Any destination provisioned for the configured rate falls behind immediately, which is the shape of the #597 incident even though #597's own root cause was the restart storm. The backpressure work now in flight will mask the symptom by shedding input frames; it does not make the stream honor its configured bitrate.
Rig
RTX 4090, driver 616.92, Windows SDK 10.0.26100. The probe harness lives on branch
feat/stream-backpressurebehindCOREVIDEO_RATE_PROBE_KBPS.Done when
A configured bitrate is honored within a stated tolerance across at least 2000, 6000 and 10000 kbps, measured as bytes out of the encoder over a fixed window — not by reading back the attribute we set.