Menu

#33 DXplay will not play X264 video if you are a user.

v1.0_(example)
pending
snarfle
None
1
2012-12-17
2012-12-14
BrianL
No

DXplay will not play X264 video if you are a Standard User.
I have developed an application that uses DirectShow lib to play (X264) MP4 files using X86 as the platform. This has been successfully deployed over the past 5 years without any problems. I recently have had multiple reports that if the user had limited privilege (a standard user) that either a “pins not connected” or “Unspecified Error” gets displayed.
On investigation the PCs that have the problem are with X64 machines where the person running the application is not logged in as an Administrator. I have tested several machines and they all have the same issue.
The software that I have is a development from the DXPlay example. I decided to use the DXPlay example to divorce the problem from my application. Interestingly, the DXPlay example shows exactly the same problem.
The DXPlay projectconfiguration has been set for X86 build. The PC has MP4Splitter installed and registered.
Using GraphEdt or GraphStudioNext an MP4 file can be played as an Administrator or User .
Running DXPlay as an Administrator plays the MP4 video.
Running DXPlay as a User reports “Unspecified Error” when attempting to play an MP4 video.

As Administrator, using VS2010, in debug mode the video plays MP4 files OK.
However, if you run VS2010 as a standard user, or are logged on as a standard user, the RenderStream function fails with 0x80004005.

The only modification to the DXplay example code is to write out to console as follows

// Connect the pieces together, use the default renderer
hr = icgb2.RenderStream(null, null, sourceFilter, baseGrabFlt, null);
if (hr != 0)
{
string errorMessage = "Render Video Failed. HRESULT = 0x" + hr.ToString("X");
Console.WriteLine(errorMessage);
DsError.ThrowExceptionForHR(hr);
}

Summary for X64 machines
DXplay will not play X264 video if you are a user. It will however play AVI files.

Typical OS for this test is Windows 7 Enterprise SP1 64 bit.
The .NET Framework is 4.0.30319
MP4Splitter.ax ( Friendlyname MPC MP4/MOV Splitter) 1.6.5.6103.

I am completely unable to resolve this issue and would appreciate any feedback that would resolve the issue. Is the problem an issue with DirectShowLib or is it that there some privilege needs to be given to the MP4Splitter to allow running as a User? If privilege needs to be given I would appreciate input of how that can be achieved.

Thankyou

Discussion

  • snarfle

    snarfle - 2012-12-17

    I can think of a few things I'd check:

    1) You say that MP4Splitter.ax is registered. If you have both an x86 and an x64 version installed, could there be some sort of permission problem with the x86 version but not with the x64 version? If you were running the x64 version of GraphEdt, this would all fit.
    2) Make sure you are NOT using DsRot in production code.
    3) (Longshot) Experiment with registering proppage.dll (the x86 version if you are compiling explicitly for x86).

    I am not aware of anything in DS.Net that would cause this. You've got the entire source code to the library, and really, there's not much actual executable code there. It's hard for a structure definition or an enum to have a permission problem.

     
  • snarfle

    snarfle - 2012-12-17
    • status: open --> pending
    • assigned_to: snarfle
     

Log in to post a comment.