Jump to content


Photo

bludiscplayer


  • Please log in to reply
20 replies to this topic

#1 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 9 May 2012 - 07:36

The new OE2.0 has a blurayplayer included to play unprotected Blurays.

I tried to install the player and the needed libbluray manually with no success ...

There are some undefined symbols:

ldd -r bludiscmenu.so
	    libbluray.so.1 => /usr/lib/libbluray.so.1 (0x7740c000)
	    libxml2.so.2 => /usr/lib/libxml2.so.2 (0x772c4000)
	    libdl.so.2 => /lib/libdl.so.2 (0x772b0000)
	    libz.so.1 => /usr/lib/libz.so.1 (0x7728c000)
	    libpthread.so.0 => /lib/libpthread.so.0 (0x77260000)
	    libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x7710c000)
	    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x77018000)
	    libm.so.6 => /lib/libm.so.6 (0x76f90000)
	    libc.so.6 => /lib/libc.so.6 (0x76e40000)
	    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x76e08000)
	    /lib/ld.so.1 (0x77450000)
undefined symbol: PyInt_FromLong	    (./bludiscmenu.so)
undefined symbol: ISOtbl	    (./bludiscmenu.so)
undefined symbol: _ZNK7eConfig5valueERKSsS1_    (./bludiscmenu.so)
undefined symbol: PyArg_ParseTuple	  (./bludiscmenu.so)
undefined symbol: PyList_New    (./bludiscmenu.so)
undefined symbol: PyString_FromString   (./bludiscmenu.so)
undefined symbol: _ZN6Enigma8settingsEv (./bludiscmenu.so)
undefined symbol: PyTuple_Size  (./bludiscmenu.so)
undefined symbol: PyList_Append (./bludiscmenu.so)
undefined symbol: _Z6eDebugPKcz (./bludiscmenu.so)
undefined symbol: Py_InitModule4	    (./bludiscmenu.so)
undefined symbol: _Py_NoneStruct	    (./bludiscmenu.so)
undefined symbol: PyTuple_New   (./bludiscmenu.so)

Do you think it is possible to build the bludiscplayer and libbluray modules for openPLI ?

Thanks pmneo

Re: bludiscplayer #2 littlesat

  • PLi® Core member
  • 57,206 posts

+700
Excellent

Posted 9 May 2012 - 07:56

I do not think so.... as there is closed source stuff required in Enigma2....

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: bludiscplayer #3 Trial

  • Senior Member
  • 1,128 posts

+34
Good

Posted 9 May 2012 - 07:59

Hi,
for unprotected BRs DreamExplorer should work. Search for a stream directory and play the longest m2ts. Should be possible for all current boxes. The "DB-Player" of DMM is more like BD-lite without menu.

ciao

Edited by Trial, 9 May 2012 - 07:59.


Re: bludiscplayer #4 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 9 May 2012 - 08:13

Well, i know that i can play the mts or m2ts files in the bdmv/stream folder, but they can also be splitted like my camera is doing.

Each scene is in a single file, and if a scene is to long it is splitted into severeal files.

Re: bludiscplayer #5 littlesat

  • PLi® Core member
  • 57,206 posts

+700
Excellent

Posted 9 May 2012 - 08:44

for unprotected BRs DreamExplorer should work. Search for a stream directory and play the longest m2ts. Should be possible for all current boxes. The "DB-Player" of DMM is more like BD-lite without menu.

Is the BD player from DMM so lame?.... then you can even play unencrypted BR m2ts files with our standard movieplayer...???

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: bludiscplayer #6 Trial

  • Senior Member
  • 1,128 posts

+34
Good

Posted 9 May 2012 - 09:07

Hi,
at least when the content is h264 yes. Hm I think. I must test again. I tried a vc1 disc and I hear only sound without a picture.

ciao

Re: bludiscplayer #7 Sjaaky

  • Senior Member
  • 7,443 posts

+41
Good

Posted 9 May 2012 - 09:59


The "DB-Player" of DMM is more like BD-lite without menu.

Is the BD player from DMM so lame?

Just the ability to play the main movie of a blu-ray disc is a nice feature. Sifting through dozens of m2ts files trying to find the right one is a not exactly user friendly. Not the mention the pain of getting interrupting in the middle of the movie and the need to search for part x of the movie.

Re: bludiscplayer #8 Carl

  • Senior Member
  • 367 posts

+8
Neutral

Posted 9 May 2012 - 10:04

http://www.videolan..../libbluray.html Seems to be opensource project.
XP1000, Clarketech CT9000 and a VU+ duo

Re: bludiscplayer #9 razorback

  • Senior Member
  • 65 posts

0
Neutral

Posted 10 May 2012 - 19:29

as long as the BD Movie is not "seamless branching" like e.g. "Wall-E" you really get the dough by selecting the largest m2ts.

in case the BD uses seamless branching you would need the ability to not only select a single m2ts but a playlist (easily found with BD-Info).

So, maybe what Carl just mentioned above - there could be some new horizons indeed....


R
ET-9100, VU+Duo, T90 28,2E-23,5E-19,2E-16,0E-13,0E-9,0E-4,8E-0,8W Quad, 4xDiseqC EMP P168W.V2

Re: bludiscplayer #10 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 28 September 2013 - 20:05

I found some sources on OpenDreamBox git: http://git.opendream...aa0e588a9dea316

 

http://git.opendream...s/BludiscPlayer

 

So do the devs of OpenPLI plan to integrate the bludiscplayer?

 

Thanks


Edited by pmneo, 28 September 2013 - 20:07.


Re: bludiscplayer #11 littlesat

  • PLi® Core member
  • 57,206 posts

+700
Excellent

Posted 28 September 2013 - 21:00

That is not possible... The real sources that are required are close source...

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: bludiscplayer #12 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 30 September 2013 - 07:36

Hmm for me it looks like that the bludiscmenu.so is a Python Extension for libbluray.so ... so it may be possible to do this work by hand?

 

It would be a great enhancement for the OpenPLI Images if they support this ...



Re: bludiscplayer #13 littlesat

  • PLi® Core member
  • 57,206 posts

+700
Excellent

Posted 30 September 2013 - 10:30

Why should this be an enhancement as mkv's are still playing.... Who today is really burning dvds or blue rays?

Edited by littlesat, 30 September 2013 - 10:31.

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: bludiscplayer #14 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 30 September 2013 - 12:32

My HD Camera records as AVCHD / BDMV structure. If a Movie is longer than the ~38 Minutes the file is splitted by the 4 GB File Limit.

 

It is possible to view the single mts files, but may lose up to 20 seconds of the movie.

 

And it' not possible to use the Disc Menu with Chapter Menus etc. or Chapter marks within the Movie ...


Edited by pmneo, 30 September 2013 - 12:32.


Re: bludiscplayer #15 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 1 October 2013 - 08:58

Well the bludiscmenu.so is just a Wrapper for libbluray disc info, it shows only a list with all Titles in the Bluray. The "magic" is inside the MoviePlayer, cause the BluDiscMenu Calls the MoviePlayer with path to BluRay Disc and Title idx.

 

		idx = self["menu"].getCurrent()[1]
		newref = eServiceReference(0x04, 0, "%s:%03d" % (self.bd_mountpoint, idx))
		newref.setData(1,1)
		newref.setName("Bludisc title %d" % idx)
		print "[Bludisc] play: ", name, newref.toString()		
		self.session.openWithCallback(self.moviefinished, BludiscPlayer, newref)

 

BludiscPlayer extends MoviePlayer:

class BludiscPlayer(MoviePlayer):
	def __init__(self, session, service):
		MoviePlayer.__init__(self, session, service)
		self.skinName = "MoviePlayer"

	def handleLeave(self, how):
		self.is_closing = True
		if how == "ask":
			list = (
				(_("Yes"), "quit"),
				(_("No"), "continue")
			)
			from Screens.ChoiceBox import ChoiceBox
			self.session.openWithCallback(self.leavePlayerConfirmed, ChoiceBox, title=_("Stop playing this movie?"), list = list)
		else:
			self.leavePlayerConfirmed([True, "quit"])

	def showMovies(self):
		pass

	def movieSelected(self, service):
		pass

 

The enigma2 binary of opendreambox has libbluray as direct dependency:

ldd -v enigma2
 libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x77ac8000)
 libfribidi.so.0 => /usr/lib/libfribidi.so.0 (0x77aa0000)
 libgstpbutils-0.10.so.0 => /usr/lib/libgstpbutils-0.10.so.0 (0x77a6c000)
 libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0 (0x7796c000)
 libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x77908000)
 librt.so.1 => /lib/librt.so.1 (0x778ec000)
 libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x777a8000)
 libdvbsi++.so.1 => /usr/lib/libdvbsi++.so.1 (0x77750000)
 libpng12.so.0 => not found
 libbluray.so.3 => /usr/lib/libbluray.so.3 (0x77720000)
 libgif.so.4 => not found
 libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x776d0000)
 libxmlccwrap-0.0.12.so => /usr/lib/libxmlccwrap-0.0.12.so (0x776b4000)
 libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x774fc000)
 libsigc-2.0.so.0 => not found
 libQtNetworkE.so.4 => not found
 libQtGuiE.so.4 => not found
 libQtCoreE.so.4 => /usr/lib/libQtCoreE.so.4 (0x77120000)
 libaio.so.1 => not found
 libcrypto.so.0.9.8 => /lib/libcrypto.so.0.9.8 (0x76fd4000)
 libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x76ec8000)
 libm.so.6 => /lib/libm.so.6 (0x76e2c000)
 libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x76df0000)
 libpthread.so.0 => /lib/libpthread.so.0 (0x76dc4000)
 libc.so.6 => /lib/libc.so.6 (0x76c30000)
 libffi.so.6 => /usr/lib/libffi.so.6 (0x76c18000)
 libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x76c04000)
 libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x76bf0000)
 libxml2.so.2 => /usr/lib/libxml2.so.2 (0x76a78000)
 libdl.so.2 => /lib/libdl.so.2 (0x76a64000)
 libz.so.1 => /lib/libz.so.1 (0x76a38000)
 libutil.so.1 => /lib/libutil.so.1 (0x76a24000)
 /lib/ld.so.1 (0x77b64000)

 

I have implemented a test.py with ctypes to use libbluray reading titles of a BDMV structure:

import sys
from ctypes import *

BLURAY_PLAYER_SETTING_PARENTAL       = 13
BLURAY_PLAYER_SETTING_AUDIO_CAP      = 15
BLURAY_PLAYER_SETTING_AUDIO_LANG     = 16
BLURAY_PLAYER_SETTING_PG_LANG        = 17
BLURAY_PLAYER_SETTING_MENU_LANG      = 18
BLURAY_PLAYER_SETTING_COUNTRY_CODE   = 19
BLURAY_PLAYER_SETTING_REGION_CODE    = 20
BLURAY_PLAYER_SETTING_OUTPUT_PREFER  = 21
BLURAY_PLAYER_SETTING_DISPLAY_CAP    = 23
BLURAY_PLAYER_SETTING_3D_CAP         = 24
BLURAY_PLAYER_SETTING_VIDEO_CAP      = 29
BLURAY_PLAYER_SETTING_TEXT_CAP       = 30
BLURAY_PLAYER_SETTING_PLAYER_PROFILE = 31

BLURAY_PLAYER_SETTING_DECODE_PG      = 0x100

class BLURAY_DISC_INFO(Structure):
    _fields_ = [("bluray_detected", c_ubyte),
                ("first_play_supported",c_ubyte),
                ("top_menu_supported",c_ubyte),
                ("num_hdmv_titles",c_uint),
                ("num_bdj_titles",c_uint),
                ("aacs_detected",c_uint),
                ("libaacs_detected",c_ubyte),
                ("aacs_handled",c_ubyte),
                ("bdplus_detected",c_ubyte),
                ("libbdplus_detected",c_ubyte),
                ("bdplus_handled",c_ubyte),
                ("aacs_error_code",c_int),
                ("aacs_mkbv",c_int),
                ("disc_id",c_ubyte * 20)]

class BLURAY_TITLE_INFO(Structure):
    _fields_ = [("idx", c_uint),
                ("playlist",c_uint),
                ("duration",c_ulong),
                ("clip_count",c_uint),
                ("angle_count",c_ubyte),
                ("chapter_count",c_ulong),
                ("clips",POINTER( c_uint )),
                ("chapters",POINTER( c_uint )),
                ("mark_count",c_uint),
                ("marks",POINTER( c_uint ))]


class META_THUMBNAIL(Structure):
    _fields_ = [("path",c_char_p),
                ("xres",c_uint),
                ("yres",c_uint)]

class META_TITLE(Structure):
    _fields_ = [("title_number",c_uint),
                ("title_name",c_char_p)]

class META_DL(Structure):
    _fields_ = [("language_code", c_uint),
                ("filename",c_char_p),
                ("di_name",c_char_p),
                ("di_alternative",c_char_p),
                ("di_num_sets",c_ubyte),
                ("di_set_number",c_ubyte),
                ("toc_count",c_uint),
                ("toc_entries",POINTER( META_TITLE )),
                ("thumb_count",c_ubyte),
                ("thumbnails",POINTER( META_THUMBNAIL ))]

lib = cdll.LoadLibrary('/usr/lib/libbluray.so.3')
lib.bd_get_title_info.restype = POINTER( BLURAY_TITLE_INFO )
lib.bd_get_meta.restype = POINTER( META_DL )
lib.bd_get_disc_info.restype = POINTER( BLURAY_DISC_INFO )

bd_mountpoint = sys.argv[1]

bd = lib.bd_open( bd_mountpoint, 0 )
disc_info = lib.bd_get_disc_info( bd )

di = disc_info[0]

print '%i %i %i %i %i %i %i %i %i %i %i %i %i' % ( 
	di.bluray_detected, 
	di.first_play_supported, 
	di.top_menu_supported, 
	di.num_hdmv_titles, 
	di.num_bdj_titles, 
	di.aacs_detected, 
	di.libaacs_detected, 
	di.aacs_handled,
	di.bdplus_detected,
  di.libbdplus_detected,
  di.bdplus_handled,
  di.aacs_error_code,
  di.aacs_mkbv )

bd_titles = lib.bd_get_titles( bd, 0, 0 )

for t in range( 0, bd_titles ):
	title_info = lib.bd_get_title_info( bd, t, 0 )
	ti = title_info[0]
	print '%i %i %i %i %i %i %i' % ( ti.idx, ti.playlist, ti.duration, ti.clip_count, ti.angle_count, ti.chapter_count, ti.mark_count )
	lib.bd_free_title_info( title_info )


if lib.bd_set_player_setting    (bd, BLURAY_PLAYER_SETTING_REGION_CODE,  7) == 0:
	print 'Failed to set BLURAY_PLAYER_SETTING_REGION_CODE'
if lib.bd_set_player_setting    (bd, BLURAY_PLAYER_SETTING_PARENTAL,     99) == 0:
	print 'Failed to set BLURAY_PLAYER_SETTING_PARENTAL'
if lib.bd_set_player_setting_str(bd, BLURAY_PLAYER_SETTING_AUDIO_LANG,   "eng") == 0:
	print 'Failed to set BLURAY_PLAYER_SETTING_AUDIO_LANG'
if lib.bd_set_player_setting_str(bd, BLURAY_PLAYER_SETTING_PG_LANG,      "eng") == 0:
	print 'Failed to set BLURAY_PLAYER_SETTING_PG_LANG'
if lib.bd_set_player_setting_str(bd, BLURAY_PLAYER_SETTING_MENU_LANG,    "eng") == 0:
	print 'Failed to set BLURAY_PLAYER_SETTING_MENU_LANG'
if lib.bd_set_player_setting_str(bd, BLURAY_PLAYER_SETTING_COUNTRY_CODE, "en") == 0:
	print 'Failed to set BLURAY_PLAYER_SETTING_COUNTRY_CODE'

lib.bd_get_event( bd, 0 )
meta_data = lib.bd_get_meta( bd )

try:
	md = meta_data[0]
	print 'di_name %s' % ( md.di_name )
except ValueError:
	print 'No Metadata'
		
lib.bd_close( bd );

Output:

1 1 0 1 0 0 0 0 0 0 0 0 0
0 0 525960000 0 11 1 4837888
No Metadata

 

So the bludiscmenu.so is not needed, but the OpenPLI MoviePlayer must use libbluray to play the BDMV structure ...

 

Is the MoviePlayer of OpenPLI closed source too?


Edited by pmneo, 1 October 2013 - 09:00.


Re: bludiscplayer #16 littlesat

  • PLi® Core member
  • 57,206 posts

+700
Excellent

Posted 1 October 2013 - 09:20

That is fully open.... As it is openpli....

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: bludiscplayer #17 MiLo

  • PLi® Core member
  • 14,055 posts

+298
Excellent

Posted 1 October 2013 - 09:27

Just don't expect binary blobs like .so libraries without source to become part of the image.
Real musicians never die - they just decompose

Re: bludiscplayer #18 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 1 October 2013 - 09:34

The libbluray is opensource by vlc: http://git.videolan....t/libbluray.git

 

This should be included to openPLI build first.

 

I'm new to enigma development ... where can i find the sources of MoviePlayer?

 

Thanks



Re: bludiscplayer #19 littlesat

  • PLi® Core member
  • 57,206 posts

+700
Excellent

Posted 1 October 2013 - 12:50

For all our enigma2 sources you should be here..
http://sourceforge.n...ojects/openpli/

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: bludiscplayer #20 pmneo

  • Member
  • 13 posts

0
Neutral

Posted 1 October 2013 - 13:55

Hmm i checked out:

 

enigma2-plugins
openembedded
openpli-oe-core
plugins-enigma2
enigma2
 

 

but found no impl of MoviePlayer ...




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users