Search

Enhanced Video Renderer is incorrectly reporting VFW_E_NOT_CONNECTED 0x80040209 for a connected pin by Roman Ryltsov

Closed
as External Help for as External

1
0
Sign in
to vote
Type: Bug
ID: 680766
Opened: 7/25/2011 11:50:58 PM
Access Restriction: Public
Moderator Decision: Sent to Engineering Team for consideration
1
Workaround(s)
0
User(s) can reproduce this bug
The problem takes place when EVR Filter is initialized with a clipping window on a secondary monitor.

After the EVR input pin connection succeeds, during a short period of time (such as during a pin media type re-negotiation on a background thread) the pin is unexpectedly returning VFW_E_NOT_CONNECTED for IPin::ConnectionMediaType call.

The problem never happens with primary monitor.
Details (expand)

Visual Studio/Silverlight/Tooling version

Visual Studio 2010 SP1

Steps to reproduce

I am attached source code to reproduce the problem.

1. Run the app
2. Move window onto secondary monitor
3. Press Try button

Product Language

English

Operating System

Windows 7

Operating System Language

English

Actual results

A message box with non-zero nStageB value indicating the problem.

Expected results

No message box, no VFW_E_NOT_CONNECTED error in code.
File Attachments
File Name Submitted By Submitted On File Size  
Image001.png 7/25/2011 24 KB
EvrInputPinConnectionBug.zip 7/25/2011 3.57 MB
Sign in to post a comment.
Posted by Microsoft on 11/18/2011 at 2:08 AM
Thank you for your bug submission. The issue you reported appears to be on a released Windows Product. If this issue is severe, causing critical business situations or blocking your product development or deployment, please go to http://support.microsoft.com or call 1-800-MICROSOFT for assistance. For Microsoft premier customers, please contact your administrator, your Technical Account Manager, or your Microsoft premier account representative.
Other Support links - http://support.microsoft.com/ph/14019#tab13
Posted by MS-Moderator08 [Feedback Moderator] on 7/26/2011 at 7:57 PM
Thank you for submitting feedback on Visual Studio 2010 and .NET Framework. Your issue has been routed to the appropriate VS development team for investigation. We will contact you if we require any additional information.
Posted by MS-Moderator01 on 7/26/2011 at 12:49 AM
Thank you for your feedback, we are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com)
Posted by Roman Ryltsov on 7/26/2011 at 12:15 AM
An internal thread is running around the following location at the time the problem takes place:

    evr.dll!GetSourceRectFromMediaType() + 0x37 bytes    
    evr.dll!CEVRInputPin::CheckMediaType() + 0x81 bytes    
    evr.dll!CBasePin::ReceiveConnection() + 0x61 bytes    
    evr.dll!CEVRInputPin::ReceiveConnection() + 0x1fc2d bytes    
    quartz.dll!CBasePin::AttemptConnection() - 0x21 bytes    
    quartz.dll!CBasePin::TryMediaTypes() + 0x60 bytes    
    quartz.dll!CBasePin::AgreeMediaType() + 0x54 bytes    
    quartz.dll!CBasePin::Connect() + 0x46 bytes    
    quartz.dll!CFilterGraph::ConnectDirectInternal() + 0x83 bytes    
    quartz.dll!CFilterGraph::ConnectRecursively() + 0x2c bytes    
    quartz.dll!CFilterGraph::ConnectInternal() + 0xde bytes    
    quartz.dll!CFilterGraph::Connect() + 0x17 bytes    
    quartz.dll!CFGControl::WorkerDisplayChanged() + 0xf1 bytes    
    quartz.dll!CFGControl::CGraphWindow::OnReceiveMessage() + 0x2e2a bytes    
>    quartz.dll!WndProc() + 0x3e bytes    
    user32.dll!_InternalCallWinProc@20() + 0x23 bytes    
    user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes    
    user32.dll!_DispatchMessageWorker@8() + 0xed bytes    
    user32.dll!_DispatchMessageW@4() + 0xf bytes    
    quartz.dll!ObjectThread() + 0x65 bytes    
Sign in to post a workaround.
Posted by Roman Ryltsov on 7/26/2011 at 12:17 AM
The workaround is pretty straightforward: EVR is created manually, so the application is aware of it. When the EVR is connected and the application keeps building the graph, it should poll input pin for the error code and after the error is found, keep polling for success code. When success code is obtained the EVR will no longer show the problem and it is safe to proceed.