Determining the Cause of a Video Stream Stall
There are two basic causes for a video stream stall:
- A hang. Either a user-mode thread or a kernel-mode thread is not being released by the driver.
- A stall. This is the result of a problem with a component in the streaming path. Some possibilities include:
- The capture driver is not completing packets. In this case, either a driver component or the hardware might be the source of the stall.
- The capture driver has no packets to complete. In this case, the buffers might be stalled in a codec or other downstream component.
If you can reproduce the problem, attach a debugger at this point to determine which is the actual cause.
To determine if the problem is a hang
- Attach a user-mode debugger to the application and look for blocked user-mode threads.
- Determine whether the application is responsive. Can the graph be paused? Can the graph be stopped? Does streaming restart if the graph is stopped and restarted?
- If the application is non-responsive, attempt to end the task by using Task Manager. If this fails, there is a kernel-mode hang.
To determine if the problem is a stall
- Determine where the samples are in the graph. This can be done locally or in a kernel-mode debugging session.
- Determine whether samples are flowing downstream. If you can reproduce the bug in GraphEdit, place an intermediate filter in the graph to display samples.
- Determine if the processing routine is being called. This can be done by attaching a kernel-mode debugger and setting a breakpoint in this routine.
Build machine: CAPEBUILD