Blu-ray playback libraries for encrypted discs (libaacs and libbdplus)?

  Thread Rating:
  • 3 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
Ace Offline
Team-Kodi Member
Posts: 780
Joined: Aug 2012
Reputation: 29
Location: Germany
Post: #31
(2017-07-17 23:01)candela Wrote:  However, if someone implements this feature request to load cached BD+ tables (which shouldn't be very hard, basically all the code is in libbdplus already) it's possible to play even the newest BD+ discs (at least without menus)

If it's easy why you don't add that feature? I tried to implement it, but it didn't work, so I postponed it. Your friends at the doom9 forum should release their source code.
find quote
candela Offline
Junior Member
Posts: 3
Joined: Jul 2017
Reputation: 0
Post: #32
(2017-07-18 07:28)Ace Wrote:  
(2017-07-17 23:01)candela Wrote:  However, if someone implements this feature request to load cached BD+ tables (which shouldn't be very hard, basically all the code is in libbdplus already) it's possible to play even the newest BD+ discs (at least without menus)

If it's easy why you don't add that feature? I tried to implement it, but it didn't work, so I postponed it. Your friends at the doom9 forum should release their source code.

I can't because
1. my C knowledge is limited (small problem)
2. I have no idea how to compile/work with projects like VLC and especially not DLLs like libbdplus (big problem)

With "not very hard" I mean for someone that can already do the above 2 things and has basic understanding of how the libddplus library works. Most of the code now in libbdplus is related to generating the tables by running the BD+ virtual machine. Once the table is generated it patches the videofiles on the fly to allow real-time playback. So what's needed is to shortcut the "generate table by running VM" functions with "load table from a file if it exists" ones.

Anyway, I can answer questions on the BD+ tables themselves if you have any. A small example parser convtab_dump.c is actually provided in libddplus which allows you to learn the structure. Furthermore you can use a very old GUI based parser called ContableView (use search engine for working download links) made by KenD00 who also made DumpHD (which in fact also allows loading of cached BD+ tables)

I'm not sure what you mean with release the source code. If you are talking about BlurayTest&Decrypt, that program is simply decoding the tables and applying the patches (a BD+ table is nothing more than patch byte X at address Y in m2ts videofile Z). It is not using any libbdplus code. The way how to decode the tables is available in convtab_dump.c as mentioned before

I appreciate for your efforts so far.
find quote
Ace Offline
Team-Kodi Member
Posts: 780
Joined: Aug 2012
Reputation: 29
Location: Germany
Post: #33
(2017-07-18 11:21)candela Wrote:  
(2017-07-18 07:28)Ace Wrote:  
(2017-07-17 23:01)candela Wrote:  However, if someone implements this feature request to load cached BD+ tables (which shouldn't be very hard, basically all the code is in libbdplus already) it's possible to play even the newest BD+ discs (at least without menus)

If it's easy why you don't add that feature? I tried to implement it, but it didn't work, so I postponed it. Your friends at the doom9 forum should release their source code.

I can't because
1. my C knowledge is limited (small problem)
2. I have no idea how to compile/work with projects like VLC and especially not DLLs like libbdplus (big problem)

With "not very hard" I mean for someone that can already do the above 2 things and has basic understanding of how the libddplus library works. Most of the code now in libbdplus is related to generating the tables by running the BD+ virtual machine. Once the table is generated it patches the videofiles on the fly to allow real-time playback. So what's needed is to shortcut the "generate table by running VM" functions with "load table from a file if it exists" ones.

Anyway, I can answer questions on the BD+ tables themselves if you have any. A small example parser convtab_dump.c is actually provided in libddplus which allows you to learn the structure. Furthermore you can use a very old GUI based parser called ContableView (use search engine for working download links) made by KenD00 who also made DumpHD (which in fact also allows loading of cached BD+ tables)

I'm not sure what you mean with release the source code. If you are talking about BlurayTest&Decrypt, that program is simply decoding the tables and applying the patches (a BD+ table is nothing more than patch byte X at address Y in m2ts videofile Z). It is not using any libbdplus code. The way how to decode the tables is available in convtab_dump.c as mentioned before

I appreciate for your efforts so far.

As I said I loaded an existing table, but it seem that the patching did not work. Searching for ContableView with a search engine also did't work. I have better things to do than searching, only because people can't post links. Why are all those tools closed source? Are you the author of BlurayTest&Decrypt?

Quote:that program is simply decoding the tables and applying the patches
Show me the code.

Quote:I can't because
1. my C knowledge is limited (small problem)
2. I have no idea how to compile/work with projects like VLC and especially not DLLs like libbdplus (big problem)

Use https://github.com/xbmc/kodi-deps for point 2.

You don't want to learn things "which shouldn't be very hard", so why should I?
(This post was last modified: 2017-07-18 13:10 by Ace.)
find quote
candela Offline
Junior Member
Posts: 3
Joined: Jul 2017
Reputation: 0
Post: #34
Sorry but I don't understand your hostility. I'm just trying to help get a BD+ playback solution for VLC and Kodi.

In response to RockerC request to include libbdplus, I pointed out that including libbdplus as is, is virtually useless. I propose a viable possible solution since real open implementation of BD+ VM is not going to happen anytime soon. My proposed solution is "easier" but it doesn't mean it's a 1 minute job. Required is understanding of C, compiling Kodi/libbdplus/VLC, inner workings of libbdplus and BD+ table structure.

1. I'm not the author of BlurayTest&Decrypt so I cannot show you the code which is written in Purebasic. But BD+ functionality happened after pointing the author to ContableView so he could learn the BD+ table structure. He then translated the table decoder in convtab_dump.c to Purebasic. It applies the patches in the table after ripping the disc. For VLC/Kodi playback however, we need patching on the fly which should be available in libbdplus (but may have bugs I don't know)

2. I'm also not the author of ContableView download here. It requires Java and works in Windows/Linux. It's simply a viewer to study the tables. If you open the table you can see the address and data you need to patch (same as what convtab_dump.c produces), so you can fix BD+ discs even manually with a hexeditor if you want

3. I don't know why your code doesn't work. Perhaps you are not changing libbdplus correctly or libbdplus had already bugs which need to be fixed or the table you have is invalid for your disc.

4. My message is also an invitation for other people to help as maybe they now think a solution to BD+ is impossible (because of the very high difficulty of implementing BD+ VM emulation)
(This post was last modified: 2017-07-18 15:13 by candela.)
find quote
magao Offline
Senior Member
Posts: 184
Joined: Sep 2008
Reputation: 3
Post: #35
(2017-07-18 15:04)candela Wrote:  Sorry but I don't understand your hostility. I'm just trying to help get a BD+ playback solution for VLC and Kodi.

One of the least favourite things for a developer to hear from someone is "it will be really easy to implement this 'small' change but I'm not going to attempt it myself".

It's perfectly OK to say up front "I'm not in the position to implement this myself as I'm not a programmer, but here are useful links and I'm willing to help people understand them", but in that case never make any estimation of how difficult the task will be. Same goes for anyone tempted to estimate how long something will take if they're not experienced in the field/domain.

Better of course is "I tried to do this myself but got stuck on X, here's my GitHub/BitBucket repo, could anyone help (or take what I've started and do it right)?".
find quote
Post Reply