Log in

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


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

cb2000
14th March 2012, 02:01
"java.lang.Error: Not implemented" is sothing not implemented, other is a bug

java.lang.NoSuchMethodError has gone, that is cause by not correct compile compilation.

I want to know as many as "java.lang.Error: Not implemented" and what cause it (the next line), such as "at java.awt.BDGraphics.drawLine(Compiled Method)(BDGraphics.java:324)
", so that I can implement them first. Pleast post it if u find another.

cb2000
14th March 2012, 02:47
case 2 is ok on my test now. Thanks.

Mercury_22
14th March 2012, 08:32
case 2 is ok on my test now. Thanks.

Yes it seems OK for me too f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:853: libbluray
version 0.2.2
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:569: AACS/Unit
_Key_RO.inf not found. No AACS protection (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:695: BDSVM/000
00.svm not found. No BD+ protection (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:876: BLURAY in
itialized! (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR16 (AUDIO_LANG) 0xffffff -> 0x656e67
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR17 (PG_AND_SUB_LANG) 0xffffff -> 0x656e67
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR18 (PSR_MENU_LANG) 0xffffff -> 0x656e67
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr3 = 1 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr4 = 65535 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr0 = 1 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr1 = 255 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr2 = 268374015 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr14 = 65535 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:389: bd_psr_
write(4, 65535): no change in value
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2048: PSR writ
e: psr4 = 65535 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2351: HDMV eve
nt: 7 0
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR11 (MENU_PAGE_ID) 0x0 -> 0xff
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr11 = 255 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2351: HDMV eve
nt: 3 17
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:389: bd_psr_
write(11, 255): no change in value
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2048: PSR writ
e: psr11 = 255 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR4 (TITLE_NUMBER) 0xffff -> 0x11
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr4 = 17 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2351: HDMV eve
nt: 7 0
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:389: bd_psr_
write(11, 255): no change in value
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2048: PSR writ
e: psr11 = 255 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2351: HDMV eve
nt: 4 97
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:389: bd_psr_
write(11, 255): no change in value
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2048: PSR writ
e: psr11 = 255 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR6 (PLAYLIST) 0x0 -> 0x61
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr6 = 97 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:389: bd_psr_
write(3, 1): no change in value
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2048: PSR writ
e: psr3 = 1 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR5 (CHAPTER) 0xffff -> 0x1
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr5 = 1 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:389: bd_psr_
write(7, 0): no change in value
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2048: PSR writ
e: psr7 = 0 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR8 (TIME) 0x0 -> 0x7fff8
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr8 = 524280 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:190: Selected
stream 0
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\register.c:391: bd_psr_
write(): PSR1 (PRIMARY_AUDIO_ID) 0xff -> 0x1
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:2079: PSR chan
ge: psr1 = 1 (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:1595: Title 00
097.mpls selected! (049131D8)
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:1529: Playback
rate change to 1.000000 ! (049131D8)
but it won't start playing and I suspect it's because it's a VC1. I've tried with both FFD and LAV and with all settings

dukey
14th March 2012, 11:41
if you look at the m2ts files and open with mpc-hc u should be able to see if they are vc1

Mercury_22
14th March 2012, 11:46
if you look at the m2ts files and open with mpc-hc u should be able to see if they are vc1

I'm saying they are VC1 ( no doubt :) ) and they are playing fine with mpc-hc and all decoders and after more tests I can say there is a problem with vc1 (p & i ) none of my VC1 BDs are working

Another problem this one I can play it but in the menu I can't see the buttons http://jumbofiles.com/b1et3hqywezc & http://jumbofiles.com/l973wfnfle33

P.S. I'm using Revision 52


EDIT: And if you have some time I have some crashing too :)Unhandled exception at 0x7072036c (bluray.dll) in demo_player.exe: 0xC0000005: Access violation reading location 0x0000001c.

Call Stack
> bluray.dll!bd_read(bluray * bd, unsigned char * buf, int len) Line 1223 + 0x17 bytes C++


EDIT 2 after rev 54

Unhandled exception at 0x6ffd14db (bluray.dll) in demo_player.exe: 0xC0000005: Access violation reading location 0xddddde19.

Call Stack
> bluray.dll!_find_pg_stream(bluray * bd, unsigned short * pid, int * sub_path_idx) Line 1400 + 0x8 bytes C++

Blight
15th March 2012, 11:57
Hi,
I'd be interested in adding support for this filter in Zoom Player once it's a bit mature.
Please don't lock it to a specific EVR custom presenter,
It would be much friendlier if the filter was self-contained and did the mixing itself as-needed rather than relying on a custom EVR presenter to do the mixing.

dukey
15th March 2012, 14:41
It's not locked to a specific EVR custom presenter. In theory it can can made to work with any. But there are a few things you must do to make it work. It has to be thread safe with regards to direct 3d. The custom evr presenters in MPC-HC are not thread safe. But it's not much work to make them so.

Rectal Prolapse
15th March 2012, 20:47
Will source be available for this? I wrote an engine for PGS decoding and display and I think it can be easily adapted to IG as well, so I can lend a hand with menu display and handling.

dukey
15th March 2012, 21:16
http://dslibbluray.svn.sourceforge.net/viewvc/dslibbluray/trunk/
Give cb2000 a message, I'm sure he add you to the project :)

Rectal Prolapse
15th March 2012, 21:35
Oh I didn't realize it was already there! Thanks!

I will look around the source in a couple of weeks from now and hopefully I can help out!

nevcairiel
15th March 2012, 21:42
The best course of action would be to contribute any improvements to the actual Blu-ray handling back to the libbluray project. In fact, its the only course of action that'll get you proper support.

Rectal Prolapse
15th March 2012, 21:55
I cannot seem to find the libbluray project - only the dslibbluray one on sourceforge. I guess I will have to keep searching around a bit.

I guess it is the VLC one:

http://www.videolan.org/developers/libbluray.html

nevcairiel
15th March 2012, 22:40
Yes thats the one. Its the base library dslibbluray is based on (as one might've guessed from the name)

dukey
18th March 2012, 02:07
cb2000,
is the code in test-60.zip the latest on sourceforge ? Because when I try and BBC_DEEP_BLUE it works fine with that compiled code. But when I compile the mixer myself and run it, it won't run past the menu buttons. Just freezes after. And the compile sizes come out different so I'm guessing there is some changes missing ?

I want to make some changes to the mixer to help with evr custom compatibility but would rather work with the latest version :p

cb2000
18th March 2012, 14:25
some interface function add in IEVRMixer, and be used by dslibbluray, see svn commit log of REV 62.

cb2000,
is the code in test-60.zip the latest on sourceforge ? Because when I try and BBC_DEEP_BLUE it works fine with that compiled code. But when I compile the mixer myself and run it, it won't run past the menu buttons. Just freezes after. And the compile sizes come out different so I'm guessing there is some changes missing ?

I want to make some changes to the mixer to help with evr custom compatibility but would rather work with the latest version :p

dukey
18th March 2012, 18:26
I was using build rev 62. The debug binary comes out a different size than that of the evrmixer.dll in the test-60.zip. I am thinking either you forgot to submit some code or REV 62 introduced a bug :p Since the BBC_DEEP_BLUE wont play past the menu with REV 62 or later.

cb2000
19th March 2012, 08:31
Mainly because the libbluray.jar not compatable with bluray.dll.
Using the the same Rev of code and and libbluray.jar in test build please.

I was using build rev 62. The debug binary comes out a different size than that of the evrmixer.dll in the test-60.zip. I am thinking either you forgot to submit some code or REV 62 introduced a bug :p Since the BBC_DEEP_BLUE wont play past the menu with REV 62 or later.

Mercury_22
19th March 2012, 09:00
I was using build rev 62. The debug binary comes out a different size than that of the evrmixer.dll in the test-60.zip. I am thinking either you forgot to submit some code or REV 62 introduced a bug :p Since the BBC_DEEP_BLUE wont play past the menu with REV 62 or later.

Working fine here
Just make sure you're using ONLY FFD cause from my tests there are big incompatibilities with other decoders e.g. LAV

dukey
19th March 2012, 12:16
Yeah I haven't even got FFD installed at the moment, been using LAV. And I'm also testing from inside my own program with my custom presenter. We should be able to fix those incompatibilities.

dukey
19th March 2012, 12:30
Hm i tried the demo player with FFDShow tryouts
all i get is

Problem signature:
Problem Event Name: APPCRASH
Application Name: demo_player.exe
Application Version: 0.0.0.0
Application Timestamp: 4f5e0938
Fault Module Name: ffdshow.ax

seems to die after
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:1582: Playback
rate change to 1.000000 ! (03D835C0)

Mercury_22
19th March 2012, 14:35
Hm i tried the demo player with FFDShow tryouts
all i get is

Problem signature:
Problem Event Name: APPCRASH
Application Name: demo_player.exe
Application Version: 0.0.0.0
Application Timestamp: 4f5e0938
Fault Module Name: ffdshow.ax

seems to die after
f:\work\bluray\dslibbluray\trunk\libbluray\src\libbluray\bluray.c:1582: Playback
rate change to 1.000000 ! (03D835C0)

Rebuild your FFD (I'm using alexin's http://www.xvidvideo.ru/component/docman/doc_download/8906-ffdshow-tryouts-project-svn-4394-x86-icl12.html since I'm using FFD just for DSLibBluray I'm too lazy to build my own) and use Win7DSFilterTweaker_5_1 to make FFD default for H264, mpeg2 and vc1 cause like I've said before at my end and cb2000's it's working

dukey
19th March 2012, 14:41
same crash
its a null pointer somewhere

Edit: okay vc1 wasn't disabled, works now :)

dukey
19th March 2012, 16:55
Well done a little debugging ..
I found that the DXVA code in the mixer is quite broken. It looks like this
http://i.imgur.com/6EjVv.jpg

If i simply disable it in the code using ..
m_bDVXAUsed = false;

It works fine
http://i.imgur.com/2CXKv.jpg

Would it be best if we just commented out the DXVA code for now ? As clearly it doesn't work right.

cb2000
20th March 2012, 14:49
Using dxva for deinerlace and color space convert, and d3d for alpha blend and scale now.
it is a bug of dxva using output format to X8R8G8 when input is ARGB. I dont find it because my card only support ARGB input in software dxva device.

Well done a little debugging ..
I found that the DXVA code in the mixer is quite broken. It looks like this
Would it be best if we just commented out the DXVA code for now ? As clearly it doesn't work right.

dukey
20th March 2012, 15:10
If i give you access to my machine can you remotely debug it ? :) I can have a go at debugging it myself but I'm not familiar with how it is supposed to work.

cb2000
20th March 2012, 16:53
try REV 76

If i give you access to my machine can you remotely debug it ? :) I can have a go at debugging it myself but I'm not familiar with how it is supposed to work.

dukey
20th March 2012, 17:04
just compiled the latest version, seems to work fine

dukey
20th March 2012, 17:07
Just a quick note, the colour mapping is wrong on the D3D version. Instead of coming out 0-255 it comes out 16-240
The DXVA version seems fine though.

dukey
22nd March 2012, 23:51
Can anyone build a windows version of libaacs?
http://git.videolan.org/?p=libaacs.git
Should compile with mingw I think.

dukey
24th March 2012, 01:07
cb2000,
we should set the proper frame rate here .. instead of


if (SUCCEEDED(pDevice->GetDisplayMode(0, &mode)))
uiFrameRate = mode.RefreshRate;

MFSetAttributeRatio(pOutputType, MF_MT_FRAME_RATE, uiFrameRate, 1)



The refresh rate might bare no relation to the video frame rate.

I want to set the


IMFMediaType *mt = NULL;

if(GetOutputCurrentType(0,&mt)==S_OK)
{
MFRatio fps;

if (SUCCEEDED(GetFrameRate(mt, &fps)) && (fps.Numerator != 0) && (fps.Denominator != 0))
{
MFFrameRateToAverageTimePerFrame(fps.Numerator,fps.Denominator,(UINT64*)&m_hnsFrameInterval);

}
}


If i set the proper
SetSampleDuration()

My jerky problems in menus go away :p

cb2000
24th March 2012, 02:33
I suggest to find out the max frame rate of all input stream.

but it still has a problem, there maybe a condition that, begin stream with no video in stream 0 and the frame
rate is 0, then it appear after some time that other stream had produce some frame.

cb2000,
we should set the proper frame rate here .. instead of


if (SUCCEEDED(pDevice->GetDisplayMode(0, &mode)))
uiFrameRate = mode.RefreshRate;

MFSetAttributeRatio(pOutputType, MF_MT_FRAME_RATE, uiFrameRate, 1)



The refresh rate might bare no relation to the video frame rate.

I want to set the


IMFMediaType *mt = NULL;

if(GetOutputCurrentType(0,&mt)==S_OK)
{
MFRatio fps;

if (SUCCEEDED(GetFrameRate(mt, &fps)) && (fps.Numerator != 0) && (fps.Denominator != 0))
{
MFFrameRateToAverageTimePerFrame(fps.Numerator,fps.Denominator,(UINT64*)&m_hnsFrameInterval);

}
}


If i set the proper
SetSampleDuration()

My jerky problems in menus go away :p

dukey
24th March 2012, 10:13
In the example code for EVR presenter, if there is no frame rate, it just guesses 30fps. Trouble is when set to the refresh rate, or 75fps here, the menus are unusuably slow. Takes 1-2 seconds to respond to key presses. If i set to the correct 24fps, everything works fine.

How can we find the input frame rate?

cb2000
25th March 2012, 07:28
m_pInput[i]->GetMediaType(ppType)

In the example code for EVR presenter, if there is no frame rate, it just guesses 30fps. Trouble is when set to the refresh rate, or 75fps here, the menus are unusuably slow. Takes 1-2 seconds to respond to key presses. If i set to the correct 24fps, everything works fine.

How can we find the input frame rate?

dukey
25th March 2012, 10:13
yeah I tried that, I just got attribute not found. My desktop refresh rate is set to 75, maybe that is too fast for DXVA or something. I tried capping it at 10010000 / 60; (59.57) fps at the problem went away totally. I'll do some more testing.

dukey
25th March 2012, 23:51
Done some more debugging of this problem. I think the issue is the time stamps are broken.
When I hit buttons on the keyboard for the menu, I can see them coming through the function
OnProcessInput()

at the right time. But the time stamps are 2~ seconds off the stream time of stream 0. So I have a menu delay of 2~ seconds.

Time stamps looks something like this

sample time 734290000 stream 0
sample time 734490000 stream 0
sample time 734690000 stream 0
sample time 734890000 stream 0
sample time 735090000 stream 0
sample time 735290000 stream 0
sample time 735490000 stream 0
sample time 750080834 stream 2 <---- stream 2
sample time 735690000 stream 0
sample time 735890000 stream 0
sample time 736090000 stream 0
sample time 736290000 stream 0

I see you are using
pFilter->GetStreamTime();
In a few places. I am not sure how accurate that is. In the documentation it says

samples with start timestamps of this time or before should be rendered by now

cb2000
26th March 2012, 06:50
when start streaming, no video yet, so no frame rate on stream 0,
after som time, video comes out, mixer will be notified by SetInputType with stream id 0, then should recheck the frame rate.
the frame rate of overlay is always not set in current dslibbluray.

yeah I tried that, I just got attribute not found. My desktop refresh rate is set to 75, maybe that is too fast for DXVA or something. I tried capping it at 10010000 / 60; (59.57) fps at the problem went away totally. I'll do some more testing.

cb2000
26th March 2012, 07:01
Maybe cause by not optimized DXVA/D3D process and no frame drop process in the mixer now, so it cannot achieve so high frame rate.

Done some more debugging of this problem. I think the issue is the time stamps are broken.
When I hit buttons on the keyboard for the menu, I can see them coming through the function
OnProcessInput()

at the right time. But the time stamps are 2~ seconds off the stream time of stream 0. So I have a menu delay of 2~ seconds.

Time stamps looks something like this

sample time 734290000 stream 0
sample time 734490000 stream 0
sample time 734690000 stream 0
sample time 734890000 stream 0
sample time 735090000 stream 0
sample time 735290000 stream 0
sample time 735490000 stream 0
sample time 750080834 stream 2 <---- stream 2
sample time 735690000 stream 0
sample time 735890000 stream 0
sample time 736090000 stream 0
sample time 736290000 stream 0

I see you are using
pFilter->GetStreamTime();
In a few places. I am not sure how accurate that is. In the documentation it says

dukey
26th March 2012, 10:22
I thought originally the problem was high frame rates too. But if i set the desktop refresh rate to 60hz, and the interval time to 60hz, then the problem comes back. I am guessing the issue is in the time stamp generation in the source filter, since the subimages render are rendered immediately, but don't display until the time catches up.

cb2000
26th March 2012, 16:11
the source filter lack quality-control process also. yes it may cause video time always in the past

I thought originally the problem was high frame rates too. But if i set the desktop refresh rate to 60hz, and the interval time to 60hz, then the problem comes back. I am guessing the issue is in the time stamp generation in the source filter, since the subimages render are rendered immediately, but don't display until the time catches up.

dukey
27th March 2012, 00:20
Well, I fixed the issue. I rewrote the EVR scheduler to drop late frames. Problems has gone away, menus work beautifully. Can now get onto more productive testing :p

Mercury_22
3rd April 2012, 08:20
@dukey after your changes (rev98->101) I can't exit demo_player ! It stops responding after "stop" and it's crashing when trying to exit ! With rev 97 everything it's OK with the same BD
Please fix this

dukey
3rd April 2012, 11:22
alright i'll look into it. I haven't made any radical changes. By the way, make sure you rebuild the demo_player, as I changed the control interface.

Mercury_22
3rd April 2012, 11:46
alright i'll look into it. I haven't made any radical changes. By the way, make sure you rebuild the demo_player, as I changed the control interface.

Thanks
I've rebuild everything. Also on a new system (just windows ) I'm getting "ActiveMovie Window: demo_player.exe - System Error ...MSVCR71.dll is missing ..." which I don't know if it was there before, but can you also do a static linking please ? :D

dukey
3rd April 2012, 13:21
I checked all the dlls and none depend on that C run time library. Actually that's quite an old library, visual studio 2010 uses a much newer one. You can use
http://www.dependencywalker.com/
to find out which dll is using that dependency. It might be a codec you are using perhaps.
Since you can compile the code yourself.

http://i.imgur.com/bmxSU.png

Sets the run time lib. The dll ones are dynamically linked.

Mercury_22
3rd April 2012, 14:04
I checked all the dlls and none depend on that C run time library. Actually that's quite an old library, visual studio 2010 uses a much newer one. You can use
http://www.dependencywalker.com/
to find out which dll is using that dependency. It might be a codec you are using perhaps.
Since you can compile the code yourself.

http://i.imgur.com/bmxSU.png

Sets the run time lib. The dll ones are dynamically linked.

Sorry you're right was a decoder problem :o

Also the "stops responding / can't exit" it's not decoder related (happens with FFD & LAV & arcsoft) :)

dukey
3rd April 2012, 14:16
I'll upload a binary you can test. I rebuilt the program and tried making it crash but can't replicate it.

Mercury_22
3rd April 2012, 14:41
I'll upload a binary you can test. I rebuilt the program and tried making it crash but can't replicate it.

You need to wait for the main movie to start then -> stop -> Exit

dukey
3rd April 2012, 15:17
Okay will check it out.
You can try changing
while (true) to while(m_Exit)
and removing

if(m_Exit)
break;

Mercury_22
3rd April 2012, 15:37
Okay will check it out.
You can try changing
while (true) to while(m_Exit)
and removing

if(m_Exit)
break;

Worst won't even start playing

(Just to be sure BDSource.cpp line 356 -> no?) :)

dukey
3rd April 2012, 18:05
does this happen with all your blurays ? Or just this particular frozen planet one.
I see it throws an exception when the frozen planet one starts to play the main title