Log in

View Full Version : directshow Bluray disc navigator filter base on libbluray


Pages : 1 2 3 4 [5] 6 7 8 9 10

dukey
14th August 2012, 12:43
Well without some sort of mixer you can't use this with any of the standard renderers. If you want to dream up a better solution feel free. It's not just menu graphics, there are background and subtitle images as well that need mixing. At least this solution works with DXVA.

Fixing VC1 would be real nice with LAV. I tried extensively but just failed to get it working.

nevcairiel
14th August 2012, 12:58
Using a custom mixer isn't exactly a standard renderer anymore, either. :)
I'll have to test my theories, we'll see if they work as expected.

dukey
14th August 2012, 13:18
Could you try and fix VC1 ? I tried sending complete frames, it was either absurdly slow or just didn't work at all.

nevcairiel
14th August 2012, 13:54
I tried to look into the code a while ago, but its already as unstructured and ugly as the old MPC-HC or ffdshow code, so i refrained from doing any work on it and decided that on the long run i'll be creating my own (also because i consider it a fun challenge).

PS:
No offense meant to all the effort that went into it, but its just not something i want to work on, because in the long run it just feels like pain.

dukey
14th August 2012, 17:35
The code is not bad at all. The directshow part isn't exactly a huge. Seems a shame to rewrite the wheel.

whurlston
14th August 2012, 20:53
Could you find out exactly what output settings you use that cause the problem ?
Enabling NV12 output caused the problem.

dukey
14th August 2012, 22:20
dxva enabled ?

whurlston
15th August 2012, 00:26
Found the problem. I had an older version of LAV on my test machine. Updated it and I am able to play using dxva (native). I get a green screen when switching between m2ts files but once the video starts, it plays perfectly. DXVA2 (copy-back) stutters but DXVA2 (native) works.

Interestingly, dslibbluray + LAV Video uses 10% of the CPU power that LAV Splitter + LAV Video does:
dslibbluray + LAV Video = 2-3% CPU
LAV Splitter + LAV Video = 25-30% CPU

Other tests:
Arcsoft Video Decoder = stuttering video
Cyberlink Video Decoder (PDVD11) w/ HAM = stuttering video
Cyberlink Video Decoder (PDVD11) w/ DXVA = perfect playback with 6% CPU
Microsoft DTV-DVD Video Decoder = perfect playback with 2% CPU.

dukey
15th August 2012, 01:27
Yeah copy back it pretty ghetto on ATI. The Microsoft DTV-DVD Video Decoder also works really nicely, shame it doesn't support VC1 as well. That would save a lot of headaches.

whurlston
27th August 2012, 02:22
Any chance of getting the licensed changed to LGPL (like the underlying libbluray) instead of GPL? Also, the license is completely missing from the test builds, it's only in the source code.

dukey
27th August 2012, 22:34
why do you want the license changed

whurlston
28th August 2012, 02:01
According to the FSF (who owns the GPL License text), any software that directly loads a GPL library (which would need to be done to use dslibbluray) needs to GPL the main app. Other interpretations are more lenient but I (and a lot of others) tend to stay clear of GPL libraries just to avoid issues. LGPL would still protect open source intent of the library itself and allow software like J River Media Center (paid) and NextPVR (free but closed source) to be able to use dslibbluray without the headache of possible legal headaches.

dukey
14th September 2012, 00:53
If you look at GPL it really shouldn't be an issue. But I am not worried about it at this stage. Trying to backport all the work that was done in dslibbluray into libbluray. Also making libbluray .. visual studio 2010 friendly. The problem was libbluray was written in c99 which visual studio 2010 doesn't support (cause it sucks in that regard). So the library was modified a fair bit to make it work in visual studio and then work continued on it. Quite a lot of work. Things like animated buttons work in dslibbluray which don't work in libbluray, as well as all the java menu stuff.

That work is almost done. So there will be no more separate branch of libbluray, as I can't maintain a separate branch.

nevcairiel
14th September 2012, 08:01
And i was wondering who was sending patches to libbluray, because cb2000 seems to still be MIA.
At least one part i don't have to bother doing, have been postponing it anyway, so thanks. Upstreaming any useful changes is always the best course of action. :)

dukey
14th September 2012, 10:53
Actually it's hpi submitting those patches too. Hpi has also done some super clever stuff to make it compile in c++. Autocasting of void pointers. The only thing stopping it compiling in vs2010 at the moment is structs with default values or whatever they are called.

nevcairiel
14th September 2012, 11:00
Designated initializers, yes. I have kept a big patch myself that just changes all related things for VS2010 compiling, only the initializers left, but there is no smart solution for those, either you use them, or you don't (or you use a pre-processors to get rid of them)

dukey
26th January 2013, 15:16
http://i.imgur.com/o3rkU3D.jpg
I'm sure someone could write a custom mixer for other renders should they feel like it

dukey
15th February 2013, 14:22
https://sourceforge.net/projects/dslibbluray/files/test-175.zip/download
Many fixes

dukey
6th March 2013, 01:52
Test 185
http://sourceforge.net/projects/dslibbluray/files/test-185.zip/download

Knocked about 200meg off the mem usage. A bunch of other fixes.
Some working BD-J titles
http://i.imgur.com/MCK1tG3.jpg

The framework for the java code for BD-J is basically done. But there are a lot of unimplemented functions. So depending on what parts of the framework titles use, will depend on what works. Libbluray needs a bunch of java guys to fill in the stubbed functions.

apgood
6th March 2013, 02:08
hi dukey

Can this filter be used with any player (e.g. mpc-hc) and render (e.g. madvr) and splitter (e.g. lab splitter)? If not which ones need to be used and why?

Cheers alex

Sent from my HTC One X using Tapatalk 2

dukey
6th March 2013, 02:26
Splitter: Not needed because the filter does the splitting itself
Renderer: It'll connect to anything, but to have working overlay graphics requires a custom mixer. There is a custom evr mixer inside the project, which allows dxva acceleration. It also allows EVR to accept formats it does not normally, ie rgba or AYUV even if the hardware can't natively accelerate that format with DXVA. Someone could write a custom mixer to support all renderers, ie for madvr support etc, but it probably wouldn't work with DXVA.

In order for the filter to be used inside mpc-hc the dev guys would need to add support for it. Maybe 100 lines of code or less and you could have basic playback support. The demo_player app has example source code of how to use this filter.

apgood
6th March 2013, 02:44
Thanks for the quick reply. Might play around with it when I get the chance.

Sent from my HTC One X using Tapatalk 2

dukey
23rd March 2013, 02:05
Test-191.zip (https://sourceforge.net/projects/dslibbluray/files/test-191.zip/download)

Hopefully fixed the time stamps on VC-1 files. Apparently vc-1 needs DTS as well as PTS flags. Who would have guessed ? :p

A whole bunch more bd-j titles should work. There is still an annoying bug in libbluray which means bd-j won't close. It's waiting for a thread to or some resource to die. If any kind java developers have some time, libbluray could really do with some java help :)

starla
25th March 2013, 14:36
There is still an annoying bug in libbluray which means bd-j won't close. It's waiting for a thread to or some resource to die. If any kind java developers have some time, libbluray could really do with some java help :)

Actually this looks more an issue with the JAVA itself, at least if you Google around for the JVM / JNI and destroying the VM.

dukey
25th March 2013, 14:55
It's an issue with libbluray.jar which of course is the java code :)

starla
27th March 2013, 11:19
It's an issue with libbluray.jar which of course is the java code :)

Could be related http://bugs.sun.com/view_bug.do?bug_id=7097333

It is the AWT thread that keeps VM alive (all other threads are closed down nicely with few libbluray java code changes - there are some resources not properly released etc.)

dukey
30th March 2013, 11:00
Thankfully the issue seems to be fixed now after the last update by hpi

dukey
1st April 2013, 19:45
Test 200
http://sourceforge.net/projects/dslibbluray/files/test-200.zip/download

Closing on bd-j titles now works correctly, instead of hanging indefinitely on exit. Quite a few more bd-j titles work.

Some bluray samples if people want to test. Yes just samples, theres only a few seconds of the main feature :)
http://www.mediafire.com/download.php?otlrwzqknk1ra41
http://www.mediafire.com/download.php?ffy987mc4wb84bv

5th element
http://www.mediafire.com/download.php?4pd0v1hu1n819z0
http://www.mediafire.com/download.php?c1464iqnaevuhor
http://www.mediafire.com/download.php?3k67d3en9c1ct1m

Snowknight26
2nd April 2013, 04:47
Any chance of including a .pdb?

It's interesting to note that if you use ffdshow to decode the video and VC-1 is set to disabled, when the disc switches from MPEG-2 to VC-1 the player crashes. I guess it doesn't recreate the filter chain on format change? (Not that it matters, not using ffdshow fixes that..)

Seems as if none of the options under the Options menu work either.

When trying to use the arrow keys on the main menu of the 2nd sample the console spits out the following (and the key stokes do nothing):
BDRootWindow.java:java.awt.BDRootWindow.postKeyEvent:86: *** java.lang.NullPointerException
BDRootWindow.java:java.awt.BDRootWindow.postKeyEvent:86: *** java.lang.NullPointerException
BDRootWindow.java:java.awt.BDRootWindow.postKeyEvent:86: *** java.lang.NullPointerException

dukey
2nd April 2013, 10:17
It's interesting to note that if you use ffdshow to decode the video and VC-1 is set to disabled, when the disc switches from MPEG-2 to VC-1 the player crashes.
Yeah I know it does this. I think it's ffdshow that crashes. I think it's offering up vc-1 even when you've disabled it. Then when it comes to decoding just sorta dies.

Seems as if none of the options under the Options menu work either.
They all work but, only certain operations are allowed at certain points. Like the popup menu option, most discs I've tried don't have popup menus. Just need some way of graying the options out at particular times in the movie.

When trying to use the arrow keys on the main menu of the 2nd sample the console spits out the following (and the key stokes do nothing):
Yes this is a libbluray bug. I have a workaround, but it causes bd-j to not exit upon closing (slaps head). Some of the samples I uploaded are the broken samples list :)

fairchild
30th May 2013, 21:46
I was trying to get this installed today but it won't register the dslibbluray.ax file

It registers the evrmixer.dll fine, but I keep getting the following error:

The module "dslibbluray.ax" failed to load.

Make sure the binary is stored at the specified path or debug it to check for problems with the binary or dependent .DLL files.

The specified module could not be found.

The readme.txt doesn't specify that I have to copy any files anywhere. I just simply created a directory named dslibbluray on my C: and tried to register the files as normal. I did though have to copy the evrmixer.dll to the syswow64 directory.

dukey
30th May 2013, 23:23
for win64
the batch files are

%windir%\SysWOW64\regsvr32.exe dslibbluray.ax
%windir%\SysWOW64\regsvr32.exe EVRMixer.dll

if %windir% doesn't resolve to the correct path ?
You could always try
c:\windows\SysWOW64\regsvr32.exe "c:\pathofdll\dslibluray.ax"
c:\windows\SysWOW64\regsvr32.exe "c:\pathofdll\EVRMixer.dll"

At some point I plan on making a proper installer for the filter, but it's not really needed for beta versions.

Blight
31st May 2013, 14:45
Dukey:
I've went through the readme file, can you clarify what you mean by 'customer mixer', how does it affect the graph?
The readme states that this filter is similar to the DVD navigator filter. Does this mean it supports ALL the DVD Navigator's classes/interfaces?

fairchild
31st May 2013, 18:19
At some point I plan on making a proper installer for the filter, but it's not really needed for beta versions.

The direct pointing to it did the trick. :thanks:

dukey
31st May 2013, 18:47
Dukey:
I've went through the readme file, can you clarify what you mean by 'customer mixer', how does it affect the graph?
The readme states that this filter is similar to the DVD navigator filter. Does this mean it supports ALL the DVD Navigator's classes/interfaces?

The customer mixer doesn't really effect the graph at all. You just create an instance of it, and when you create EVR call

pRenderer->InitializeRenderer(pMixer, NULL);
http://msdn.microsoft.com/en-gb/library/windows/desktop/ms704667%28v=vs.85%29.aspx

The same way you create a customer presenter for EVR. With this design you can also use a custom presenter with the customer mixer if you want.

The interfaces are very similar to the DVD navigator, but not identical. I figured if you were supporting both DVD and Bluray it would make sense to make them at least similar. But the interface is the easiest part of the filter, it could be changed with very little work really.

dukey
1st June 2013, 18:21
The direct pointing to it did the trick. :thanks:

I don't suppose you could do this for me
Go to windows console .. type

Echo %systemroot%

and

Echo %windir%

Hopefully this should show why the batch file is failing :)

fairchild
1st June 2013, 21:09
both say it's c:\windows

Blight
1st June 2013, 23:09
dukey:
Where are the docs for these interfaces?

dukey
2nd June 2013, 00:38
Hi Blight,
the interface can be found here
http://sourceforge.net/p/dslibbluray/code/HEAD/tree/trunk/dslibbluray/IBDNav.h
You should also check out the source for demo_player in the project as it has quite a minimalist example of how to create and use the filter. If you are doing c++ you could probably recycle most of it, but I have a feeling zoom player is written in something else.
The interface I don't consider finished yet, some of the functions are stubbed and do nothing at the moment. But if you have useful feedback of what kind of functions you need/want from the filter then I can modify as needed. Feedback in this regard would be most useful.

For basic support, simply supporting KeyInput()
would be enough to get started. That enables menu navigation which lets you basically do everything.

Blight
2nd June 2013, 13:01
dukey:
I'm interested in mouse/touch navigation.
ZP is written in Delphi, so if you can include the C and Delphi headers in the ZIP package, that would surely save a lot of time and increase participation by player devs.

dukey
2nd June 2013, 13:06
If you scroll down, you'll see the interface has a C interface as well. I really know nothing about delphi
Mouse support is on my to do list, but it's quite complicated because have to talk to the renderer to work out window position, scaling options etc

nevcairiel
2nd June 2013, 14:16
Mouse support is something the player should implement, and just give you the x/y of the click relative to the unscaled video size, like DVD. Everything else is much too complicated.

ddjmagic
2nd June 2013, 14:46
Nice work on this project.

I tried a few HDMV titles and they seem to be working well, the only difference to TMT is some of the menus slide up/down in TMT where as they just appear with dslibbluray, other than that HDMV menu navigation worked great, popup menu during the main movie works nicely and language switching/ scene selection worked from the popup menu too, special features seemed to load correctly, the only issue I had was a photo gallery didn't respond correctly.

Java titles were hit and miss and some either got stuck or crashed the player. A couple worked quite well though.

I will post up some samples later from various discs, so people can have a play around if they want :)

dukey
2nd June 2013, 18:11
The sliding menus are probably animated buttons, which libbluray doesn't support yet. Test 120 had animated button support but that was using our own libbluray branch, or cb2000's branch.

ddjmagic
2nd June 2013, 18:30
Is it possible for me to try/install Test 120 without overwriting Test 200?

dukey
3rd June 2013, 11:47
Just register/unregister the files, then it should work.
ALLTHEBOYSLOVEMANDY is fixed in the current source I just uploaded. Hopefully it should get added to the libbluray source soon too :)

Superb
3rd June 2013, 13:08
Any reason not to use http://code.google.com/p/win-iconv/ instead of the fully blown libiconv?

ddjmagic
3rd June 2013, 13:13
Just register/unregister the files, then it should work.
ALLTHEBOYSLOVEMANDY is fixed in the current source I just uploaded. Hopefully it should get added to the libbluray source soon too :)

Great! I'll check it out on next release.

You were correct about the sliding menus being animated buttons, I tried Test 120 and the menus did slide out correctly.

dukey
3rd June 2013, 14:12
Any reason not to use http://code.google.com/p/win-iconv/ instead of the fully blown libiconv?

Is there much difference ?

Superb
4th June 2013, 08:29
Depends on what you consider "much" to be. :) Should be smaller + faster to compile.