Log in

View Full Version : MPLS binary format documentation needed


fangorn
14th March 2010, 08:21
Hi,

I am writing a little Perl program that reads MPLS files and displays information (a rewrite of mpls_dump) and can export video, audio and subtitle streams to TS container using tsMuxeR or optionally demux Sup subtitle streams and recode them to Vobsub format using BDSup2Sub.

It is designed to run on any OS that has a Standard Installation of Perl. Even if I am developing on Linux. :)

The Parser works perfect (thanks guys), but some information about stream types are missing. I only have the codes and need some information, what the code means. This information is necessary to improve the automatisms. My scripts (see my Sig.) are designed for batch processing and therefore use sensible defaults and automatic checking to get good results even when the user specifies nothing at all. (At the moment, most of my scripts are Bash scripts running only on Linux, but I am in the process of reimplementing them in Perl so most of the features would be available on any platform.)

Now to my question:
Is there a documentation of the MPLS binary file freely available? I did not find anything. I know that normally these specifications are financially painful to get when it is an "industry standard".

Pelican9
14th March 2010, 20:37
Ask! ;)

fangorn
15th March 2010, 18:24
At the moment I am seeking a list of allowed stream types where I have only the numbercodes.

I already have lists of codec types and other information. But I think I will need more information later.

I reimplemented the parser of mpls_dump that works perfect, but the number of elements where the read information is actually made sense of is limited.

Pelican9
15th March 2010, 19:52
Have you checked your mpls file with BDedit?

fangorn
15th March 2010, 22:04
Yeah, I think I could do that, even if I am on Linux. But I not just want one code that I happen to have on one example disk, but - if that is possible - all possibilities defined in the standard.

Normally, if I write a program, I do it as universal as possible.

Pelican9
15th March 2010, 23:57
You can see all the codes because you can change the values...
But anyway:

subpath_type[0]:='-';
subpath_type[1]:='-';
subpath_type[2]:='p. Audio';
subpath_type[3]:='IG menu';
subpath_type[4]:='Text sub';
subpath_type[5]:='OoM Sync';
subpath_type[6]:='OoM Async';
subpath_type[7]:='IM Sync';

stream_type[0]:='';
stream_type[1]:='PlayItem';
stream_type[2]:='SubPath';
stream_type[3]:='IM PIP';

tstream[$02]:='MPEG-2';
tstream[$1b]:='AVC';
tstream[$ea]:='VC1';

tstream[$80]:='LPCM';
tstream[$81]:='DD';
tstream[$82]:='DTS';
tstream[$83]:='Dolby Lossless';
tstream[$84]:='DD+';
tstream[$85]:='DTS-HD ex. XLL';
tstream[$86]:='DTS-HD XLL';
tstream[$a1]:='DD+';
tstream[$a2]:='DTS-HD';

tstream[$90]:='PG';
tstream[$91]:='IG';
tstream[$92]:='Text';

fvideo[0]:='-';
fvideo[1]:='480i';
fvideo[2]:='576i';
fvideo[3]:='480p';
fvideo[4]:='1080i';
fvideo[5]:='720p';
fvideo[6]:='1080p';
fvideo[7]:='576p';
fvideo[8]:='res.';
fvideo[9]:='res.';
fvideo[10]:='res.';
fvideo[11]:='res.';
fvideo[12]:='res.';
fvideo[13]:='res.';
fvideo[14]:='res.';
fvideo[15]:='res.';

frame[0]:='-';
frame[1]:='23.976';
frame[2]:='24';
frame[3]:='25';
frame[4]:='29.97';
frame[5]:='-';
frame[6]:='50';
frame[7]:='59.94';
frame[8]:='res.';
frame[9]:='res.';
frame[10]:='res.';
frame[11]:='res.';
frame[12]:='res.';
frame[13]:='res.';
frame[14]:='res.';
frame[15]:='res.';

taudio[0]:='-';
taudio[1]:='Mono';
taudio[2]:='-';
taudio[3]:='Stereo';
taudio[4]:='-';
taudio[5]:='-';
taudio[6]:='Multi-ch.';
taudio[7]:='-';
taudio[8]:='-';
taudio[9]:='-';
taudio[10]:='-';
taudio[11]:='-';
taudio[12]:='St.+M-ch.';
taudio[13]:='res.';
taudio[14]:='res.';
taudio[15]:='res.';

freq[0]:='-';
freq[1]:='48 kHz';
freq[2]:='-';
freq[3]:='-';
freq[4]:='96 kHz';
freq[5]:='192 kHz';
freq[6]:='-';
freq[7]:='-';
freq[8]:='-';
freq[9]:='-';
freq[10]:='-';
freq[11]:='-';
freq[12]:='c:48/96, e:192 kHz';
freq[13]:='-';
freq[14]:='c:48, e:192 kHz';
freq[15]:='res.';

tappl[0]:='res.';
tappl[1]:='Main TS for a Movie';
tappl[2]:='Main TS for a Time based slide show';
tappl[3]:='Main TS for a Browsable slide show';
tappl[4]:='Sub TS for a Browsable slide show';
tappl[5]:='Sub TS for a Interactive Graphics menu';
tappl[6]:='Sub TS for a Text subtitle';
tappl[7]:='Sub TS for a one or more elementary streams path';

fangorn
18th March 2010, 15:27
Thanks for the help.

And sorry for being a little stubborn. My workload went a little bit over my head.

I have never heard of BDedit before and also did not try it. :rolleyes:

hubblec4
9th November 2013, 11:15
hi pelican
hi fangorn

im looking for a guide/example that explain me the structure of a MPLS (bluray) file.

i found out where the chapter-marks are stored in the file but i dont understand the format for the time.

i hope you have same information for me.

hubble

bigotti5
9th November 2013, 16:31
time in 45khz ticks

e.g
00 00 AF C8 == 45000 == 1 sec == 00:00:01,000
01 9B FC C0 == 27000000 == 600 sec == 00:10:00,000

hubblec4
9th November 2013, 20:08
thank you. that helps me.

and where i can find the length of the clip?

bigotti5
9th November 2013, 20:59
What clip?
Length of the PlayItem(s) in mpls?
Length of clip defined in clpi?

hubblec4
9th November 2013, 21:43
What clip?
Length of the PlayItem(s) in mpls?
...

sorry. yes the playitem i mean.

bigotti5
9th November 2013, 21:50
Σ of difference(s) between in_time(s) and out_time(s) of PlayItem(s)

hubblec4
10th November 2013, 12:16
thanks again, i found all infos.

hubblec4
18th November 2013, 00:27
hi bigotti
i hope you can help me again.

in a mpls file i have 2 playitems but only the first will be used (eac3to).
which byte have the info which playtitem is used?

in a mpls file with many playitems (seemless branching) one byte is "5E" is this the right byte?

bigotti5
18th November 2013, 19:53
in a mpls file i have 2 playitems but only the first will be used (eac3to).
PlayItem or SubPlayItem?

in a mpls file with many playitems (seemless branching) one byte is "5E" is this the right byte?
You can identify seamless branching by two bytes immediately after clip_codec_id (4D 32 54 53)
00 01 -> no seamless connection
00 05 -> seamless connection

maybe its easier for us to use german doom9 forum...

hubblec4
19th November 2013, 15:38
maybe its easier for us to use german doom9 forum...

yes i think too (http://forum.gleitz.info/showthread.php?46710-MPLS-Structure&p=440802#post440802)