[Beta - Update 2013/08/09] MP3D - Render 3D videos via MediaPortal! (1 Viewer)

morpheus_xx

Retired Team Member
  • Team MediaPortal
  • March 24, 2007
    12,073
    7,459
    Home Country
    Germany Germany
    I have a 3D capable display now and also thought about future 3D support for MP2.

    Some time ago I made experiments to render the whole screen as SBS only using one single frame and stretching it to 2 halves. If you would do a proper 3D gui we could render each frame twice, using a slightly different camera position (see also http://www.nvidia.com/content/GTC-2010/pdfs/2010_GTC2010.pdf for background).

    That would also require to have proper Z-information on all screen elements available. The video frame itself then should be handled differently (i.e. if it comes already as SBS you must not split and copy it again). This could be managed if the VideoBrush gets an information which render pass is done currently (left or right side) so it can decide how to process the frame accordingly.

    Currently I have no concrete plans to work in this section, just sharing some basic ideas here ;)
     
    Last edited:

    tourettes

    Retired Team Member
  • Premium Supporter
  • January 7, 2005
    17,301
    4,800
    @tourettes
    I was talking from a plugin's point of view. You are talking from MP core's point of view.
    Are you suggesting abandoning 3d support via a plugin and making it built-in (MP1, MP2)? (I'm very interested in this approach.)

    Better support could be gained by native implementation (also some of the 3rd party components are required to be able to support 3D Blu-rays). I have no short term (or even long term) plans currently to for looking at the 3D support - few days ago I bought a new 2D video projector. It will last for many years :)
     

    tourettes

    Retired Team Member
  • Premium Supporter
  • January 7, 2005
    17,301
    4,800
    The video frame itself then should be handled differently (i.e. if it comes already as SBS you must not split and copy it again). This could be managed if the VideoBrush gets an information which render pass is done currently (left or right side) so it can decide how to process the frame accordingly.

    That would be only a partial solution as it wont suport all the video sources. It would be good for the scene rips but it would be non-usable for example for the Blu-ray content.
     
    Last edited:

    morpheus_xx

    Retired Team Member
  • Team MediaPortal
  • March 24, 2007
    12,073
    7,459
    Home Country
    Germany Germany
    The video frame itself then should be handled differently (i.e. if it comes already as SBS you must not split and copy it again). This could be managed if the VideoBrush gets an information which render pass is done currently (left or right side) so it can decide how to process the frame accordingly.

    That would be only a partial solution as it wont suport all the video sources.
    Of course the VideoBrush would need to know which kind of input arrives, so it can decide if it should take different scanlines, half frames, or only each 2nd frame for each (left/right) pass.
     

    tourettes

    Retired Team Member
  • Premium Supporter
  • January 7, 2005
    17,301
    4,800
    That would be only a partial solution as it wont suport all the video sources.
    Of course the VideoBrush would need to know which kind of input arrives, so it can decide if it should take different scanlines, half frames, or only each 2nd frame for each (left/right) pass.[/quote]

    And that path leads all the way down to libbluray in the whole chain as all components need to have the support.

    For the brush itself it would be better if the video renderer (EVR or DirectX11.1) would be having the final word on every pixel how it gets renderred to the screen. It is better to have all the logic in one place to allow mixing up gamma, color space conversions etc. This of course applies only when the video is renderred in a full screen - probably it would be doable if the brush would have special full screen mode where the processing is disabled.
     

    ScRePt

    Portal Pro
    August 2, 2010
    170
    96
    Athens
    Home Country
    Greece Greece
    My view is that the Brushes can solve the problem. Applying gammas/color spaces etc can be done on the whole video and then the brush would do the splitting. This way is also "themable" and does not require special filters/renderers. Could be slower though ... my 2c

    Anyway, back to MP1, I am open to any suggestions to overcome the 3dtv.at filter requirement.
     

    ronsonol

    MP Donator
  • Premium Supporter
  • April 2, 2007
    178
    23
    Kingston
    Home Country
    Canada Canada
    Is it possible to add Nvidia 3D Vision as the Output format? I installed stereoscopic player 1.8 and it is available as an option within the program.
    I have a 3d ready DLP projector and my two choices for viewing 3d are Nvidia Vision, or Software Pageflipping with DLP glasses control.

    Also, I have this installed with MP 1.2.3 and at the end of any video I watch with 3D mode enabled, Mediaportal Freezes.
    MediaPortal.log

    2013-02-12 11:35:58.684049 [Info.][MPMain(1)]: Main: DX9 size: 1280x720
    2013-02-12 11:35:58.686049 [Info.][MPMain(1)]: Main: Video memory left: 2797 MB
    2013-02-12 11:35:58.719051 [Info.][MPMain(1)]: Exception :confused:ystem.NullReferenceException: Object reference not set to an instance of an object.
    at MediaPortal.Player.PlaneScene.DrawTextureSegment(VertexBuffer vertexBuffer, Single srcX, Single srcY, Single srcWidth, Single srcHeight, Single dstX, Single dstY, Single dstWidth, Single dstHeight, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed)
    at MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed)
    at MediaPortalApp.Render(Single timePassed)
    2013-02-12 11:35:58.724051 [Info.][MPMain(1)]: Exception :Object reference not set to an instance of an object.
    2013-02-12 11:35:58.727052 [Info.][MPMain(1)]: site :Void DrawTextureSegment(Microsoft.DirectX.Direct3D.VertexBuffer, Single, Single, Single, Single, Single, Single, Single, Single, Int64)
    2013-02-12 11:35:58.733052 [Info.][MPMain(1)]: source :Core
    2013-02-12 11:35:58.736052 [Info.][MPMain(1)]: stacktrace: at MediaPortal.Player.PlaneScene.DrawTextureSegment(VertexBuffer vertexBuffer, Single srcX, Single srcY, Single srcWidth, Single srcHeight, Single dstX, Single dstY, Single dstWidth, Single dstHeight, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed)
    at MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed)
    at MediaPortalApp.Render(Single timePassed)
    2013-02-12 11:36:10.140704 [Info.][MPMain(1)]: Main: D3DERR_INVALIDCALL - Error in the application.
    -2005530516 (D3DERR_INVALIDCALL)
    at Microsoft.DirectX.Direct3D.Device.BeginScene()
    at MediaPortalApp.Render(Single timePassed)
    2013-02-12 11:36:10.159705 [Warn.][MPMain(1)]: d3dapp: Resetting DX9 device
    2013-02-12 11:36:10.161706 [Info.][MPMain(1)]: TexturePacker:Dispose()
    2013-02-12 11:36:10.162706 [Info.][MPMain(1)]: TexturePacker: remove texture:1999
    2013-02-12 11:36:10.173706 [Info.][MPMain(1)]: TexturePacker: remove texture:1998
    2013-02-12 11:36:10.175706 [Info.][MPMain(1)]: TexturePacker: remove texture:1994
    2013-02-12 11:36:10.177706 [Info.][MPMain(1)]: TexturePacker: remove texture:1996
    2013-02-12 11:36:10.178707 [Info.][MPMain(1)]: TexturePacker: remove texture:1993
    2013-02-12 11:36:10.189707 [Info.][MPMain(1)]: fonts.SafeDispose()
    2013-02-12 11:36:10.193707 [Warn.][MPMain(1)]: d3dapp: DirectX9Ex is lost or gpu hung --> Reinit of DX9Ex is needed.

    Error.log

    2013-02-12 11:35:23.684047 [ERROR][MPMain(1)]: Exception :confused:ystem.NullReferenceException: Object reference not set to an instance of an object.
    at MediaPortal.Player.PlaneScene.DrawTextureSegment(VertexBuffer vertexBuffer, Single srcX, Single srcY, Single srcWidth, Single srcHeight, Single dstX, Single dstY, Single dstWidth, Single dstHeight, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed)
    at MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed)
    at MediaPortalApp.Render(Single timePassed)
    2013-02-12 11:35:23.687047 [ERROR][MPMain(1)]: Exception :Object reference not set to an instance of an object.
    2013-02-12 11:35:23.690048 [ERROR][MPMain(1)]: site :Void DrawTextureSegment(Microsoft.DirectX.Direct3D.VertexBuffer, Single, Single, Single, Single, Single, Single, Single, Single, Int64)
    2013-02-12 11:35:23.693048 [ERROR][MPMain(1)]: source :Core
    2013-02-12 11:35:23.696048 [ERROR][MPMain(1)]: stacktrace: at MediaPortal.Player.PlaneScene.DrawTextureSegment(VertexBuffer vertexBuffer, Single srcX, Single srcY, Single srcWidth, Single srcHeight, Single dstX, Single dstY, Single dstWidth, Single dstHeight, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed)
    at MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed)
    at MediaPortalApp.Render(Single timePassed)
    2013-02-12 11:35:41.347057 [ERROR][MPMain(1)]: Exception :confused:ystem.NullReferenceException: Object reference not set to an instance of an object.
    at MediaPortal.Player.PlaneScene.DrawTextureSegment(VertexBuffer vertexBuffer, Single srcX, Single srcY, Single srcWidth, Single srcHeight, Single dstX, Single dstY, Single dstWidth, Single dstHeight, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed)
    at MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed)
    at MediaPortalApp.Render(Single timePassed)
    2013-02-12 11:35:41.350058 [ERROR][MPMain(1)]: Exception :Object reference not set to an instance of an object.
    2013-02-12 11:35:41.353058 [ERROR][MPMain(1)]: site :Void DrawTextureSegment(Microsoft.DirectX.Direct3D.VertexBuffer, Single, Single, Single, Single, Single, Single, Single, Single, Int64)
    2013-02-12 11:35:41.356058 [ERROR][MPMain(1)]: source :Core
    2013-02-12 11:35:41.358058 [ERROR][MPMain(1)]: stacktrace: at MediaPortal.Player.PlaneScene.DrawTextureSegment(VertexBuffer vertexBuffer, Single srcX, Single srcY, Single srcWidth, Single srcHeight, Single dstX, Single dstY, Single dstWidth, Single dstHeight, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.DrawTexture(UInt32 texAddr, Int64 lColorDiffuse)
    at MediaPortal.Player.PlaneScene.RenderLayer(Single timePassed)
    at MediaPortal.GUI.Library.GUILayerManager.Render(Single timePassed)
    at MediaPortalApp.Render(Single timePassed)
     

    ronsonol

    MP Donator
  • Premium Supporter
  • April 2, 2007
    178
    23
    Kingston
    Home Country
    Canada Canada
    Thanks for the reply,
    is that because const int METHOD_NVIDIA = 5; // Requires Stereo Renderer?
    Is is not possible to add this to the post-processing list just as you do with the transformation filter?
     
    Last edited:

    Users who are viewing this thread

    Top Bottom