Kodi Community Forum
[WINDOWS] Internal Directshow Based Player [NO LONGER DEVELOPED] - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Support (https://forum.kodi.tv/forumdisplay.php?fid=33)
+--- Forum: General Support (https://forum.kodi.tv/forumdisplay.php?fid=111)
+---- Forum: Windows (https://forum.kodi.tv/forumdisplay.php?fid=59)
+---- Thread: [WINDOWS] Internal Directshow Based Player [NO LONGER DEVELOPED] (/showthread.php?tid=61355)



- cl0ud - 2010-11-06

Currently in DSPlayer how does the rendering of the frame and gui work?

does DSPlayer call being scene
then pass the surface and the frame to be rendered to the renderer
then render the gui once the renderer has finished rendering the frame onto the surface
and then call end scene to present the scene?

If that is the case then yeah I don't see how it would be possible to use a renderer that creates its own surface unless you could copy the rendered scene from madvr onto the surface used by xbmc and then render the xbmc surface. The only other problem is that when madvr calls end scene the scene will be presented on screen overwriting anything that xbmc has drawn. I guess then that madvr would have to render to an offscreen buffer only (not flip the buffer onto the screen) and pass that buffer back to xbmc via a callback so that xbmc can copy the buffered frame onto its 3d surface and then render its controls before presenting the final frame.

I just don't get how other plays like MPC-HC is able to render its controls onscreen when madvr is running in 3d fullscreen exclusive mode or any other renderer for that matter.


- SpectreX - 2010-11-13

I have a small issue with DS player. Apple Trailers and youtube videos do not work. When you press play nothing happens. Looking at the log i see an error regarding the MP4 splitter which is not connecting to the graph. Any ideas? . I`m using the default (latest) DSPlayer build, set as the default player, no other codecs installed.


- tiben20 - 2010-11-13

cl0ud Wrote:Currently in DSPlayer how does the rendering of the frame and gui work?

does DSPlayer call being scene
then pass the surface and the frame to be rendered to the renderer
then render the gui once the renderer has finished rendering the frame onto the surface
and then call end scene to present the scene?

If that is the case then yeah I don't see how it would be possible to use a renderer that creates its own surface unless you could copy the rendered scene from madvr onto the surface used by xbmc and then render the xbmc surface. The only other problem is that when madvr calls end scene the scene will be presented on screen overwriting anything that xbmc has drawn. I guess then that madvr would have to render to an offscreen buffer only (not flip the buffer onto the screen) and pass that buffer back to xbmc via a callback so that xbmc can copy the buffered frame onto its 3d surface and then render its controls before presenting the final frame.

I just don't get how other plays like MPC-HC is able to render its controls onscreen when madvr is running in 3d fullscreen exclusive mode or any other renderer for that matter.
First, i'll let you know that was really tricky to insert the renderer into xbmc.
The way it works xbmc as an application process which always do

1-waiting for a frame to be ready(dvdplayer is calling this from CDVDPlayer::Outputpicture,in the dsplayer case both renderers are processing the d3d surface and then call the main thread to tell him their a frame ready)
2-begin scene
3-renderthegui
4-render the video frame (if the wait for frame wasn't called before the end of the timer the video frame will not be displayer)(also dvdplayer there is copying the picture to the d3dsurface(not the same for the dxva2 rendering)(for dsplayer the current renderer(vmr9 or evr) will get a callback to process the d3dsurface that was processed when it gave the call from step 1)
5-end scene


SpectreX:its a codec problem you can try in monogram graphedit to see if its connecting with those filters. I'm currently developing in vb.net a config editor for the dsplayer it's almost ready for public testing ill let know in this post when it is.
For the plugin i need some time to work this out


- albain - 2010-11-14

Hi,

I am a ffdshow team developer and I would like to work on the integration of the ffdshow's subtitles engine into DSPlayer. I have done this work already in Windows Media Center and MediaPortal.

The benefits that I can see :
- Internal & external subtitles support
- More subtitles formats supported (including bluray subs)
- Integration with XBMC UI : subtitles delay, streams switching or external subtitles switching...

FFDShow already has the APIs to communicate with 3rd party applications (2 different ways actually).

Please tell me what you think about it and by advance thanks your for your help

Regards

Damien


- liquidskin76 - 2010-11-14

Hi Albain,

It's good to see the man who single-handedly brought HD audio bitstreaming (via ffdshow) to the masses on the xbmc scene! Nod Wink

Welcome!


- SpectreX - 2010-11-14

@tiben20 - Thx for the quick reply. This happens only on streaming content. If i download and play a trailer via the D&Play option in Apple Trailers, it work just fine. Also, the trailers from HD-Trailers (the ones that you can play by default for the movies XBMC library) work, but when you press stop XBMC freezes. Should i get you an entire debug log, maybe it will help?

I`ll try GraphEdit tonight and see what i can come up with.

@liquidskin76 - And the best software decoder, with pristine PQ. DSPlayer + MPC-HC video codecs + ffdshow for audio or video = pristine PQ and AQ Big GrinBig GrinBig GrinBig Grin


- blinkseb - 2010-11-15

albain Wrote:Hi,

I am a ffdshow team developer and I would like to work on the integration of the ffdshow's subtitles engine into DSPlayer. I have done this work already in Windows Media Center and MediaPortal.

The benefits that I can see :
- Internal & external subtitles support
- More subtitles formats supported (including bluray subs)
- Integration with XBMC UI : subtitles delay, streams switching or external subtitles switching...

FFDShow already has the APIs to communicate with 3rd party applications (2 different ways actually).

Please tell me what you think about it and by advance thanks your for your help

Regards

Damien

Hi!

DSPlayer has already his own subtitles engine, based on mpc-hc one. Using ffdshow one would force the users to actually use ffdshow if they want subtitles support, so it's not a long term option. Moreover, our engine is already deeply integrated into XBMC, and works very well (we also have bluray subs support :p).

If someone absolutely want to use ffdshow subtitles engine, the best way is enabling it from the property panel of ffdshow. Adding ffdshow specific code for subtitles (and so UI options) will only confuse end users.

But, if you want to submit a patch to add support for ffdshow subtitles, you're more than welcome, but you need to make sure that the default subs engine is used if ffdshow isn't in the graph.


- albain - 2010-11-15

Hi blinkSeb and thanks for your answer

I have found how it works and indeed MPCHC engine is well integrated into XBMC code but I have found a clean way to add FFDShow subtitles engine without modifying/breaking the existing code. FFDShow engine is enabled by a setting, and even though it won't be loaded if FFDShow is not in the graph

Personally I prefer FFDShow subtitles engine because there are more settings and I prefer the rendering

About bluray subs, last time I worked on it my PGS implementation inside FFDShow was the most advanced one but it may have changed since

Anyway, I understand for sure that you guys don't want to have a mess in the existing code and I'll do my best to prevent this.

So I'll submit a patch when I have finished then

Damien


- tiben20 - 2010-11-15

albain Wrote:Hi blinkSeb and thanks for your answer

I have found how it works and indeed MPCHC engine is well integrated into XBMC code but I have found a clean way to add FFDShow subtitles engine without modifying/breaking the existing code. FFDShow engine is enabled by a setting, and even though it won't be loaded if FFDShow is not in the graph

Personally I prefer FFDShow subtitles engine because there are more settings and I prefer the rendering

About bluray subs, last time I worked on it my PGS implementation inside FFDShow was the most advanced one but it may have changed since

Anyway, I understand for sure that you guys don't want to have a mess in the existing code and I'll do my best to prevent this.

So I'll submit a patch when I have finished then

Damien
I'm happy too see someone with experience who want to help with the developement of the project. Just remember to follow the xbmc coding syntax. It is really really different from what i seen in ffdshow. For more information about this see
http://forum.xbmc.org/showthread.php?tid=5238


- blinkseb - 2010-11-15

albain Wrote:Hi blinkSeb and thanks for your answer

I have found how it works and indeed MPCHC engine is well integrated into XBMC code but I have found a clean way to add FFDShow subtitles engine without modifying/breaking the existing code. FFDShow engine is enabled by a setting, and even though it won't be loaded if FFDShow is not in the graph

Personally I prefer FFDShow subtitles engine because there are more settings and I prefer the rendering

Have fun then Wink

What I meant in my post it's, if you want to integrate ffdshow with xbmc gui (for example, subtitles switching, etc.), you should not forget that :
1) the user may not want ffdshow to render the subs
2) ffdshow may not be in the graph

for 1), a gui option should be enough, or at least an option in the xml settings.

for 2), you should loop over the graph to be sure ffdshow is loaded. You need to know that dsplayer does not work like other DirectShow players: the users choose which filters he wants to use in a xml file, and we load it. DirectShow merit system is *not* used at all.

Quote:About bluray subs, last time I worked on it my PGS implementation inside FFDShow was the most advanced one but it may have changed since

I rewrote most of the mpchc engine for blu ray subs to support animation on pgs subs. You may want to look at it Wink

Quote:Anyway, I understand for sure that you guys don't want to have a mess in the existing code and I'll do my best to prevent this.

So I'll submit a patch when I have finished then

Damien

Existing code is already a mess, it needs a lot of cleanup Wink I think you should look at the SubtitlesManager class, and maybe do something like a subtitles factory to switch between ffdshow / dsplayer engine.

If you need anything, don't hesitate to ask, I'm always around.

[HS]
Il me semble que tu es français non? Je suis sur Lyon! Si jamais tu as des questions, tu peux me pm en français, ça peut peut être aider!

Bon courage!
[/HS]


- albain - 2010-11-16

Ok merci, et moi from Paris....

This is what I've done already :
1/ if video codec is ffdshow or ffdshow DXVA => ok
2/ else others codecs are looped into and I look after ffdshow subtitles or raw filter

If ffdshow not present, then fallback to the default engine.

Modifications :
1/ CSubtitleManager derivates from new virtual class ISubtitleManager
2/ New class CFFDShowSubtitleManager derivates from ISubtitleManager too
3/ The engine is chosen inside StreamsManager according to settings and a test of ffdshow presence.

This should not be long to finish.

Otherwise I have found a bug in the VS2008 project : the file SystemGlobals.h should be replaced with SystemGlobals.cpp otherwise the link fails


- blinkseb - 2010-11-16

albain Wrote:Ok merci, et moi from Paris....

This is what I've done already :
1/ if video codec is ffdshow or ffdshow DXVA => ok
2/ else others codecs are looped into and I look after ffdshow subtitles or raw filter

If ffdshow not present, then fallback to the default engine.

Modifications :
1/ CSubtitleManager derivates from new virtual class ISubtitleManager
2/ New class CFFDShowSubtitleManager derivates from ISubtitleManager too
3/ The engine is chosen inside StreamsManager according to settings and a test of ffdshow presence.

This should not be long to finish.

Otherwise I have found a bug in the VS2008 project : the file SystemGlobals.h should be replaced with SystemGlobals.cpp otherwise the link fails

Perfect, that's what I had in mind!

I personally don't use vs2008 so, indeed, it may have some issues, thanks for reporting, i'll fix that!


- tiben20 - 2010-11-16

albain Wrote:Ok merci, et moi from Paris....

This is what I've done already :
1/ if video codec is ffdshow or ffdshow DXVA => ok
2/ else others codecs are looped into and I look after ffdshow subtitles or raw filter

If ffdshow not present, then fallback to the default engine.

Modifications :
1/ CSubtitleManager derivates from new virtual class ISubtitleManager
2/ New class CFFDShowSubtitleManager derivates from ISubtitleManager too
3/ The engine is chosen inside StreamsManager according to settings and a test of ffdshow presence.

This should not be long to finish.

Otherwise I have found a bug in the VS2008 project : the file SystemGlobals.h should be replaced with SystemGlobals.cpp otherwise the link fails
albain Wrote:Ok merci, et moi from Paris....

This is what I've done already :
1/ if video codec is ffdshow or ffdshow DXVA => ok
2/ else others codecs are looped into and I look after ffdshow subtitles or raw filter

If ffdshow not present, then fallback to the default engine.

Modifications :
1/ CSubtitleManager derivates from new virtual class ISubtitleManager
2/ New class CFFDShowSubtitleManager derivates from ISubtitleManager too
3/ The engine is chosen inside StreamsManager according to settings and a test of ffdshow presence.

This should not be long to finish.

Otherwise I have found a bug in the VS2008 project : the file SystemGlobals.h should be replaced with SystemGlobals.cpp otherwise the link fails
lol un autre moi je suis du québec.

Another french developing under windows.

Could you keep development related reply in the development thread http://forum.xbmc.org/showthread.php?tid=59610


- steelman1991 - 2010-11-16

Its a takeover Big Grin


- tiben20 - 2010-11-17

Here a preview of the first part of the .net application i'm doing to configure the dsplayer xml files.
Image
This part is currently working for saving the xml from a changed rules

The drag and drop from this part is working but i didn't complete the entire filters loading for testing a config.
Image
Ill still need to do some important part related with the setttings before putting this as a public beta