PDA

View Full Version : XCD development


raistlin2k
12th August 2002, 18:49
Hello, I'm back from holidays.

I have good and bad news!

First good:
I took my vaio with me & wrote pre-specs for XCD menu

And now bad news:
On flight back, my notebook had a head-crash (harddisk) so I have to write whole specs again.

SORRY for the delay.

Searched a bit in the forum to get up-to-date, is it possible that there is still no XCD backup-creator? What is the problem?

Other thing, saw that Vorbis is now 1.0, something new about post-gain??

Thanks
Raist

avih
13th August 2002, 02:15
wb ;)

there is a backup creator. but it's not released yet. it will be released with the filter and some new tools. i'm working on that.

hope u've enjoyed your vacation ;), and sorry for your hd :(

sekxx
13th August 2002, 15:25
hello
perhaps you should try: http://www.ontrack.com/easyrecovery/
Easy recovery pro, few month ago I had a crash on my hard drive,
I code myself and I feel very sad to lose all of my source code,
hopefully someone did advice me this software on a french forum:
http://www.forumschoixpc.com/viewtopic.php?topic=13790&forum=6
[It works very good for small file size<=10Mo, for source code, text document... It's perfect, but don't exept to recover a divx movie for exemple, the software does detect it, but wont be able to recover all the 700Mo]
good luck.

RadicalEd
13th August 2002, 22:15
Ey guys! I on the other hand have been working zilch on XCD, I haven't even updated my guide yet :O
Then again my computer dissapeared for the last 3 weeks (longer story than neccesary) so you can blame that partially... at any rate, its almost school time here which means I'll have plenty of time to work on stuff because I won't be sleeping all day (homework is for quitters). I'm interested to see whacha got rastlin, hopefully you can recover it okay.

raistlin2k
14th August 2002, 19:42
Till now I spent all my time on recovering my data, seems that the crash happened directly on that spec-file:angry:

I was able to recover almost all files, all those shitty system32-folder files which can be easily replaced, but almost all my personal docs are gone, libraries about mp3s,games, movies

SHIT!!! (I had no backup, wanted to create one after holiday)

So I have to restart all this libraries again before I can write my thought into a spec-file again, sorry, bit I can't even listen to some music without these files, also my study depends on my notebook (have a lot of medical lexicons)

Moreover I leave tomorrow Vienna for one week, and without my VAIO I'm really lost:scared:

Final conclusion: Next week (aug 22) I'll revive my Vaio and restore my libraries step-wise, hope to finish specs around 29th, please be patient, I'll really hurry, but I also have to restart studies then (first exam in september:( )

See ya
Raist

avih
14th August 2002, 21:05
good luck Raist, and take it easy ;)

RadicalEd
15th August 2002, 04:43
>< me and poopity poop know your pain raist
but hey I have a vaio too, neato :D

mustaneekeri
28th August 2002, 23:10
Any update about that Backup Creator and filters Avih??
Can u say estimate when those are released?
Hope i don't sound too impatient, keep up the good work...

avih
28th August 2002, 23:13
can't estimate. but they will be released.

raistlin2k
30th August 2002, 21:15
Just some fine-tuning left, hope I can "release" my Menu-proposal tomorrow.

Greetings
Raist

jurij
2nd September 2002, 15:48
@ Avih: I was thinking of why don't you ask some help to your friends (Koepi and DExt) since you don't have much time if not at all?
There is nothing to be afraid of, i believe.
It's been really long time since the backup creator was ready.
Please don't see this like an offense, I perfectly know you have no free time...

avih
2nd September 2002, 17:09
@jurij:
unfortunately, the sources are in the middle of a re-write (read - non-working mess atm). dext is quite busy with his work now. i think koepi is able to handle it easyly though.

however, i would like to finish this transition myself (and yes, i know it's taking TOO much time).

sorry again. as i said, it will be ready.

BlackSun
3rd September 2002, 07:27
Originally posted by avih
@jurij:
unfortunately, the sources are in the middle of a re-write (read - non-working mess atm). dext is quite busy with his work now. i think koepi is able to handle it easyly though.

however, i would like to finish this transition myself (and yes, i know it's taking TOO much time).

sorry again. as i said, it will be ready.

Hey Avi, why don't you come to IRC anymore ? I want to have some news 'bout you (not related to XCD) :cool:

raistlin2k
3rd September 2002, 18:49
Well, after having to rewrite the whole file since first version was eaten as dessert by my VAIO-Harddisk, here now my second pre-specs for CLX-M, a proposal for a menu-system for CD Level XCDs.

@avih
Please tell me if it's somehow Ok, and what should be improved.

If everything is finished, I will ask Christophe Paris to help us with a authoring tool, he wrote a very good tool for creationn of old microDVD-menus. Since my proposed system is very similar, it should be possible to adapt his tool for CLX-M.

Hope you like my work.

Cheers,
Raist

avih
3rd September 2002, 21:49
:) thanx. i'll go over it prob tomorow.
other ppl are encouraged to so as well of course ;) . the more comments the better.

thanx again
avi

[Toff]
4th September 2002, 10:23
After a quick read, here are my comments :
- add ChapterPage, SubtitlePage and AudioPage numbers so you can have special buttons giving direct access to those pages.
- NSB (No selection available before) could be removed, you can split your page in two sub-pages, the first page with no selection would jump to the second page with selection.
- If you want to control your menu with a remote control you can add for each button the button number to select when you press up, down, left, right key (it's done like that on dvd).

To make things clear :
- Frames=x-y can it be Frames=x for stills ?
- Can you use more than 1 action on a button ?
so you can change language and subtitles at the same time, then jump to the main menu page.

Also I may have something that interrest you, I've played a little with dvd menu files (ifo+vob). At the moment I have a little test application that can extract dvd-menu informations like pages frame range, buttons coordinate. It's in very alpha stage, and tested with only one dvd, but it's promising. I will try to prepare a little demo that generate an avisynth script to show buttons on the menu video.
Getting buttons command is a harder thing, and I need more time to look at this.

I'm not familiar with other XCD spec. parts but have you think about using an xml structured file for menu description ?

raistlin2k
4th September 2002, 13:47
Thanks for quick reply, Toff!

I will add ChapterPage, SubtitlePage and AudioPage numbers.

NSB is really not needed, since I have PJAE, you're right.
Most of the code was taken from microDVD menus, never thought about,
that NSB is not needed because of PJAE, THANKS:)

Frame=x must be possible for stills, if easier for authoring tool it can be Frame=x-x, don't know, we'll see.

I will also add possibility to use more than 1 action, you're again right:p, there are DVDs that switch page after changing eg language.

I'm really very interested in your tool, sounds like a really good tool!!:cool:

avi_h told me to write the menu-file in txt, so that it is possible to edit it with normal notepad, what do you think would be the advantage of using xml?

Cheers
Raist

P.S. I really love your Micro DVD Player Menu Maker!! Hope you will help us in creating the ultimative tool for converting a DVD menu into a XCD menu.

P.P.S Could you send me this alpha-version? Just to have a look at it? raistlin2k@gmx.at

[Toff]
4th September 2002, 19:48
what do you think would be the advantage of using xml?
It's more extensible, better structured, and it can be edited with notepad to. But your program need an XML parser.

My tool isn't usefull ATM. It show you the menu structure in the following way :

<?xml version="1.0"?>
<menus>
<menu lang="en" type="root">
<section id="0" entry_id="0x83">
<page id="0" vob_id="1" cell_id="1" duration="898"/>
</page>
<page id="1" vob_id="1" cell_id="2" duration="1007"/>
<buttons>
<button id="1">
<coords x1="327" y1="317" x2="577" y2="352" />
</button>
<button id="2">
<coords x1="327" y1="356" x2="577" y2="391" />
</button>
<button id="3">
<coords x1="327" y1="395" x2="577" y2="430" />
</button>
<button id="4">
<coords x1="327" y1="436" x2="577" y2="471" />
</button>
</buttons>
</page>
...


I must replace duration (not very usefull) by start_frame, end_frame that I must calculate depending of the result AVI, which will be created by appending each required cell of vob splited by cell_id.

It's not very cleay at the moment ;-)

raistlin2k
5th September 2002, 08:07
@Toff

Again a question about NSB & PJAE.

My intention is to make the CLX-M as similar as possible to existing DVD-menu-standard, to make copying easier:D

So my question, since I'm not very familiar with DVD specs:
How does, for example Gladiator, handle this, does it have a NSB on the menu-start, where no buttons are shown (get faded in after 5 secs) or does it have two pages, one with & one without buttons.

Any idea?
I'll try to check this by looking at the ifo of Gladiator.
Are you aware of another DVD offering buttons that are not shown at start of menu, but get shown after a while. Please check them.

If there are some DVD using something like NSB, I will leave it additionally to PJAE, PJAE will be for sure in the specs, for example for Dolby-Trailers shown before the menu:cool: (eg Stargate)

Do you think it would be easier to stay with durations instead of start-&end-frame?

@Avi_h
Just a small question: TXT or XML, what shall we use? I think this is only a question for the authors of the players having to add a XML parser.

[Toff]
5th September 2002, 08:32
I use Matrix for my test (it's the example I have provided in previous post).
The first "page" is a page with no button. Button graphically appear at the end of the first page but are only available on the second page.
I don't think that NSB exist on DVD.

I think that you must only keep indispensable things. If you can do without then do without :D

No don't use duration, It was just to see if I can make difference between video (duration>0) & stills (duration=0).

Concerning XML, if the other files of the XCD format are not in XML then there is not much avantage to use it just for menu.
I use XML because I think that it will make life easier for other program that want to use menu data.

avih
5th September 2002, 13:28
Originally posted by raistlin2k
@Toff
@Avi_h
Just a small question: TXT or XML, what shall we use? I think this is only a question for the authors of the players having to add a XML parser.

as i see it there are 4 options:

1. text only + the player has to take care of the parsing.
2. text only + we add the parsing capabilities to the xcd library (api).
3. xml only + the player has to take care of the parsing.
4. xml only + we add the parsing capabilities to the xcd library (api).

which means that in 1 and 3 the player has to take care for everything, while in 2 and 4 we supply an api to access the menu data.

imho, since we wanna keep the player implementation overhead minimal, we should provide an api. however, xml by itself can be considered as an api, although in this case, the player implementer will have to incorporate an xml parser himself.

imo, it doesn't really matter if we use xml or text, as long as we provide a decent api for that. but, if the file format is not gonna be terribly complex, then i think xml might be an overkill.

what do u guys think is the best option to help players incorporate xcd will the minimal efforts possible?

raistlin2k
5th September 2002, 14:51
Since I found no XML in other XCD-specs besides CLX-M, I think we should use TXT for menu-file, making it easier for player-authors.

Toff, you must agree that old microDVD.ini's were quite easy to understand, and new menu-files are even more simple since they contain only menu-info; no info about languages,subs etc.

So could you change your tool later on so that it can export menu-data as CLX-compliant txt, when specs are finished??

ABout, NSB, it is now "out of the race", we stick with PJAE.

@Avi_h
HAve you read all my specs? Do you think they are OK (with some modifications) and can be made an official part of XCD?

Bye
Raistlin

MaTTeR
5th September 2002, 15:07
Originally posted by avih

what do u guys think is the best option to help players incorporate xcd will the minimal efforts possible?

Perhaps BlackSun or Blight might want to comment on this since they have some direct experience with coding players:D

[Toff]
5th September 2002, 15:54
Toff, you must agree that old microDVD.ini's were quite easy to understand...
Yes, easy to understand, but in fact Micro DVD Player ini file format is a bad example because it's not really an ini file ;)
Example:
[SUBTITLES]
1=ENG English
File=english.txt ; <-
2=FRE French
File=french.txt ; <- BAD! 2 times the same key in the same section

So this format is unusable with classic ini files API.


Using a txt file format isn't a problem but you must keep a certain logic, and keep in mind parsing facilities with existing tools.
But choosing xml or raw txt is not so important we must better focus on content, sorry to loose your time with this.

Also where is defined data for chapters, language, subtitles ? I've read XCD spec (perhaps too quickly) but can't find anything on this.

I will do my best to help you with my tools.

Koepi
5th September 2002, 16:01
Uh, with subs and languages the whole thing gets messy...

how to solve it with ogg, it's all built-in into the files....

Regards,
Koepi

raistlin2k
5th September 2002, 18:22
@Toff
Funny thing, 2 hours ago (before reading your mail), I checked the specs of XCD playlists and saw that the auxiliary data for the streams saved in the header file is marked with TBD.


So now a question (or even two) @ avi_h & Koepi:
1. Is there some info about the audio-&sub-streams of an ogm in the header? If not, we'll have some problems, I guess, because not only the player has to get this info, but even the authoring tool, because of following scenario: Someone rips a DVD, and leaves one language away (because it is commentary or other reason, who cares), now the info about streams coming from ifo-files correspond not with the produced ogm-file, which would result in wrong language-switches.
(@Toff again: Your tool should offer the possibility to fix such differences between ifo & ogm after converting the ifo, best would be an auto-renumber after "removing" one language I, so that all following stream-numbers correspond with the OGM :D)
Is there a way to get this info from the ogm very easy in an automatic routine, so that it can be added to the authoring tool? Otherwise I suggest to add an option to OggMux to let it create a temporary txt-file containing audio-&sub-info that can be integrated into menu.xcm by authoring tool later on. Other way would be to write it into [XCDI] as a separate file, so that authoring tool only gets info and does not modify data & player has to read it additionally on menu-start, but I prefer integration into menu.XCM.

2. About playlist-structure: avi_h wrote to keep player-requirements as minimal as possible, that's why I suggest to write also the playlist-file in ascii-form, why should we write menu-file in txt (and not XML), but playlist as binary:confused:


About the Frame=x (for stills)
Wouldn't it be better to use all time Frame=x-y? (and x=y for stills)
Because otherwise we would need an additional line for every [Page] to indicate whether it is still or a/v, otherwise player would always look for a second number after "-". I guess it would be easier to let tool write Frame=x-y, and if x=y player knows that it is a still-page.


Last point, multiple action on button-press:
Toff, you know how microDVD does it, all actions in one line, only separated with a #.
I guess, it would be easier for the player (and more clearly for user) to add an Count=%Nr% line before, so that player knows how many actions have to be examined, and they can be written each into in his own line. (Same reason why I "invented" the brackets for parameters, to make file more clearly). What do you say?

Regards
Raist

Koepi
5th September 2002, 18:39
I can let OggMux spit out such a file, maybe like this:

01. Video
02. Audio (english)
03. Audio (german)
04. Subtitle (french)
05. Subtitle (Africaans)
...

Else you'd need to build a filtergraph, render the file and search the OggSplitter output pins for what's in the file (that's an odd job, I tell you ;) ).

I hope this helps,

regards,
Koepi

raistlin2k
5th September 2002, 18:48
Thanks Koepi for your quick answer & your help in solving the problem.:)

Are all streams numbered like you show it in your last post, or does it restart with 1 for audio & subs? Because in that case following would be easier to "understand" for Toffs tool, I guess:

[AUDIO]
English
German
[SUBS]
French
Africaans

So authoring tool must only take every line as name of stream & number it automatically.

If all streams are numbered together in OGM, your solution is surely better.

Thanks again for quick reply and especially all your efforts, in the past & future.

Raist

Koepi
5th September 2002, 18:56
Those streams aren't really numbered like in an MPEG/VOB.

Your output proposal looks easier, I think I implement that fast if needed.
Hell, analysing existing streams is really something I don't like, but it seems to me the proper solution. I could try to write a small analyzer (have no subs at hand so I can't analyse for them though), which spits out the audio streams of an OGM as a list.
This code could be used and extended by you for an authoring tool.

Regards,
Koepi

[Toff]
5th September 2002, 19:16
I suppose TBD mean "To Be Defined". (just checked the spec and i'm right:))
A binary playlist ! Do you want to hide us something ? :cool:


I think that audio & subtitle language must be defined in a universal way. So when the menu say ChangeAudioLanguageTo(en) the player will look for an english audio stream. These code are already defined in ISO 639. The authoring apps know the available language because they are stored in the ifo file.
http://lcweb.loc.gov/standards/iso639-2/englangn.html


Frame=x-y (and x=y for stills) OK, it's the easiest way.


Multiple action:
Yes you can add Count=%Nr% or just
Action%Nr%=%action_type%(%action_param%)
ex:
Action1=6(2) {change langugage}
Action2=8("OK") {show message "OK"}
Action3=1(1) {go to page 1}

raistlin2k
5th September 2002, 19:44
I know what TBD is, just funny, that we found this lack independent of each other.:D
Fortunately Koepi already offered to help us with a modified OggMux, writing the infos into a file.

Hey, binary playlist was not my idea, I'm even against it:devil:

BUT, I don't like your idea of defining streams. I recommend to take the info from Koepis future Oggmux and number the streams, because it would leave room for people wanting to use other languages then english or french for their Language Names (eg DEUTSCH;) ), because ISO 639 is limited to those 2 languages:(

About multiple Action, in your example, how shall the player know when last action for that button is reached? Not easier to use a counter? And second (only small thing), till now action8 is limited to showing only "Not available", do you really think we need other text on the graphical display (for the single-line-display there is already the Info-line) like "OK"?? If you really want it, I'll modify the spec-file.

Raist

[Toff]
5th September 2002, 21:38
BUT, I don't like your idea of defining streams. I recommend to take the info from Koepis future Oggmux and number the streams, because it would leave room for people wanting to use other languages then english or french for their Language Names (eg DEUTSCH ), because ISO 639 is limited to those 2 languages


I think I haven't been very clear on how to use the iso639 code. This code is used as a key, as a reference. So you use this code to identify the language.
If you want to show the language name it's another story, you must have a table of string.
You have a table for each language you want to support :

ISOStringFR = {
{ "fr", "Franšais"},
{ "en", "Anglais" }
...
}
ISOStringEN = {
{ "fr", "French" },
{ "en", "English" }
...
}
ISOStringDE = {
{ "fr", "Franz÷sisches" },
{ "en", "Englisch" }
...
}


So in every language you use the same code.
Like on internet with .fr .de ...
And in the OGG audio stream name you must add this code to.
01. Video
02. Audio (en)
03. Audio (de)
04. Subtitle (fr)
...
The player then do the matching.
So when your menu say ChangeAudioLanguageTo(en) it will choose the stream number 2.

I really think it's the simplest and the best way ATM.


About multiple Action, in your example, how shall the player know when last action for that button is reached?
Then I can ask the same question for page and button.

I think that the libxcd will parse the file and give the result in a structured form to the player (a vector, a list or any other container).
You can have a vector of command defined like that:

typedef struct
{
int type;
int arg;
} command;
vector<command> CommandList;

The libxcd parser will do a parsing by line.
On line
Action1=6(2)
it will add an element in the vector.
newcommand.type=6;
newcommand.arg=2;
CommandList.push_back(newcommand);
Then you can use CommandList.size() to have the number of element or if you don't want to use vector you can increment a counter on each "Action" line.

Also raistlin2k I don't know if you have programming knowledge. Can I use this type of explication ?
If you don't then I can try to explain this in a different way.

RadicalEd
5th September 2002, 21:47
aw man guys, I've gotta apologize. Due to messed up parental situations I have had absolutely zero time online (or on any sort of system capable of video anything) in the past 7 weeks. Yeah, it sucks all right. I should be getting my computer back this weekend although that dosent help the whole not-having an internet service thing, but at least I should be able to read the spec over and stuff. Yeah, so much time wasted.. cuz of stupid people >< gaaah.

[Toff]
5th September 2002, 21:54
And second (only small thing), till now action8 is limited to showing only "Not available", do you really think we need other text on the graphical display (for the single-line-display there is already the Info-line) like "OK"?? If you really want it, I'll modify the spec-file.


I think it can be great so you can use the language you want ;)

I have seen that you plan to use mpeg4 capabilities for button highlighting. If you want to do that then I think that you can do the whole menu using mpeg4 spec.

On DVD, button highlighting is done using a bitmap as a mask. It's possible to extract those bitmap with subrip (save subpicture as bitmap).
So if you want to support this you can plan to add a directory for those bitmap.

raistlin2k
5th September 2002, 22:10
--Ok, sorry for the thing with multiple actions, you're right, player needs no counter when offering action%Nr%. I will change this.

Unfortunately my programming skills are limited to Pascal 7 (but only for now:p ), I have a big exam at the end of September, I'll start to learn new programming languages then (already downloaded VS.NET).

--OK, I understand now your idea with ISO639, but what's the advantage?
We need even one more table of srings!!
Why not use the number for switching?
e.g. Action=6(2) will switch language to English.

[AUDIO]
German
English

--Action=8 will be extended!

--Specs don't say that we'll use MPEG4-capabilities for button highlighting, all I write is that using a modern system (like MPEG-4) will not result in more file-size when saving button not as separate file, but saved inside of the background.
Avi_h told me not to limit on one codec, but to create CLX-M codec-independent.(as written in the first line of specs).

Is it not possible to keep the highlighted buttons in the menu.xcs, like in VTS_01_0.vob?? And save it at the right position just inside of the background?

To be honest, I didn't know about this Subrip features, so I will have a look at it

Raist

[Toff]
5th September 2002, 22:59
I understand now your idea with ISO639, but what's the advantage?
I think it's a more standard way.
You can change your movie stream order and it will still works.
Without that you can't automate the dvd<->xcd language mapping.
Stream order in OGG depend of how you mux you stream, if you prefer to have a language by default you will surely use it as the first audio stream so you don't have to change it in the player each time. But on DVD the stream order can be totaly different.

Also I think it'a a great way for player to know the language of each stream. You choose in you player the default code to use and regardless of the stream number it will choose the corresponding language.
Hard to do if you allow the user to enter his language string. You must add to this string a code to identify it in a standard way.
"user definable string" (fr)

Is it not possible to keep the highlighted buttons in the menu.xcs, like in VTS_01_0.vob?? And save it at the right position just inside of the background?
The player will need to go to a certain frame in the movie, store it in memory, then go back to the right page and apply the highligting. I don't think that's the easiest way. The player will still have to do the resizing because when you will store the frame in memory it will be with the original movie size and not the current full screen size.
Also for each page you need to define where the frame is stored into the menu video file.

raistlin2k
6th September 2002, 08:50
About iso639, table of strings should be saved in the player or in every movie menu-file? Is second, we have to extend menu-file again.

Moreover, you still need to get info about ogm-streams from oggmux, I guess. Your idea is, if I'm right, to leave info about languages in the menu like in ifo & only use oggmux-data for letting the player know, which stream is eg english? OK, sounds good.


About highlighting: Just "subripped" the menu of Phenomenon, all I see is black background with white empty rectangles.
Who does this work as highlighting? I mean, there is not only one rectangle on every bmp, but several!?

I always thought that highlighted buttons are not only stored as masks in vob, but as full button, save in background.
Now I see it's different, so how shall we arrange this?

A special dir is not needed, I think, [XCDI] is containing only 2 files atm, menu.XCM & menu.XCH, so there's enough "place" for tons of bitmaps. About resize problem, a saved bmp is also in menu-resolution and not current, so same problem, no?

Thanks for advice
Raist

Koepi
6th September 2002, 08:54
Maybe the image you extracted is a "alpha mask" - very suitable for highlighting, just do a weighted overlay off the original picture with that.... :)

Best regards,
Koepi

[Toff]
6th September 2002, 09:30
About iso639, table of strings should be saved in the player or in every movie menu-file? Is second, we have to extend menu-file again.
No, you don't have to store any table.
You can use a table if you want to check the validity.
I imagine that the oggmuxer will have an edit field to enter the user definable string and a combox box so you can only choose iso code. The table is only really needed in the oggmuxer.

the menu will have:
Action1=6(fr)

the ogg file will have:
0. Video
1. Audio stream "English" (en)
2. Audio stream "Franšais" (fr)

And the player will only show "English" or "Fanšais" but it will know that "Franšais" is french.


About highlighting, you have the bitmap mask for all buttons on the same page, and for each button you have an highlighting color defined in a table. Also I think you can do different effect type with this mask, you can fill it with a solid color, or do some alphablending effect.

IMHO the easiest way for the player would be to have 1 bitmap for each button. This bitmap can be extracted from the full page bitmap by using button coordinate. You can even make a comparison to eliminate identical button bitmap so you can save space when you have a lot of button with the same shape.
When you enter in a button zone, the player will have to read the button bitmap, resize it to the button zone size and do is graphical operation.
We may ask if players authors want to support this and what is the easiest way for them.

raistlin2k
6th September 2002, 10:52
the ogg file will have:
0. Video
1. Audio stream "English" (en)
2. Audio stream "Franšais" (fr)


I think you mean the exported txt-file from oggmux, because ogm is already defined, don't think they want to change it.


Moreover I still see no real advantage, Koepi would have to change a lot in his tool , and user interaction is needed again for declaring which stream is in which language.
I think it makes no difference whether user has to select from a combo-box in oggmuxer the correct iso639-standard or he has to say which stream (or button) from the ifo corresponds with which stream of the ogm, scenario: Oggmux delievers list of streams ("English","German") and user has to say which button switches to which language.

It's the same effort for the user, in your way he has to select iso630 from the combo-box in oggmux, in my way he has to select correct stream number, also from a combo-box, in the authoring tool. (Behind the stream-number,tool can show the language by reading the export-file from oggmux).

Moreover, should the user always have a look at the iso639-tables for knowing what to choose from the combo-box?? Let us enter Audio-stream-info into Oggmux like we did till now, it's easier for a user to select from a combo-box "Austronesian" than "map"!

I think Koepi should decide this, if he wants to adapt his oggmux in the way you described it, OK, but I think it would be less work to impliment only the txt-export without changing the User-interface of oggmux.

Corresponding to the given example above, txt-file, that gets exported by Oggmux only for getting read by auhoring tool and afterwards deleted, should be:
[AUDIO]
English
Austronesian
[SUBS]
...

Now selecting "Austronesian" in the combo-box of the authoring tool should place action1=6(2) to the actual selected button. THAT's IT!



For the button highlighting question, It's also not me, who wants to (or can) decide this, you're right, we should pass this decision over to player-authors.

@AUTHORS OF PLAYERS THAT WILL SUPPORT XCD (Zoomplayer,PowerDivx)
PLEASE TELL US, HOW IT SHALL BE DONE!

Thanks
Raist

[Toff]
6th September 2002, 11:13
There is no modification to do to the ogg format (even if it will be better to have a dedicated field to precise the stream language with iso639 code).

Adding this to oggmux must take, hum ? 5 minutes ;)
Place a combox box on the form. Fill it with iso code (with a copy/paste)
Then when you add the new stream to the list you append the containt of the combox box to the user definable string.
Not very hard.
And there is no need for export.
I think the user will always use 2 or 3 iso code, it's not a lot to learn.

There is one thing we can't do with your version : the player can't choose your preferred language automatically.

EDIT : What others think about that (koepi, avih, ...) ?

raistlin2k
6th September 2002, 11:29
the player can't choose your preferred language automatically

Why not? Just let it be the first stream in the ogm.


NO EXPORT? How shall the menu (or the player) know which stream is in which language? I thought there is no tool to read the info in th ogm besides Tobias DS-Filters? Koepi also said that such an export is the easiest way for letting the menu know the stream-info.
For the player, I guess, it would work if iso639-info is saved in ogm, so that player can identify stream this way, but without that, I don't see how this should work. And, again, I don't think they want to change stream-info in ogm itself.

Raist

[Toff]
6th September 2002, 11:39
Why not? Just let it be the first stream in the ogm.
Each user as his own preferred language.
One user would like to watch the movie in german, another in french.
So using the first stream is not an option.

NO EXPORT?
The menu use the iso code.
The player use the string that identify the stream (it's already here, because you use it to give each stream a name) which also contain the iso code.

Whoua ! I'm starting to think that my explication are not very clear :(

raistlin2k
6th September 2002, 19:00
Ah, now I found I start to understand, you want a player with something like country-settings, so that player knows mother-language of the user?? Is it that? Well, then you're right, only your version works, but then we should also think to handle multi-language-menus.

If I understnad you correctly, you don't want a new string variable for the iso inside the ogm, but to save the iso in brackets right after stream-name into the same sring variable? Well, this should be possible,BUT therefore we need a new OggDS that hides the term in brackets when showing the stream names, but that's only a small fix, i guess. (easier than adding a new string var to ogm, which could result in problems with prior ogm's)

Tell me if I'm right now:
Menu uses only iso (Action=6(en)) and passes info iso-info over to player who reads both iso & stream-name from ogm and is able to select correct language? That would be nice :cool:

And you don't need stream-names for your authoring-tool, right? You just disable audio-streams, that were not ripped, with action8 in the menu? AHA!!

I hope that the player-authors visit this discussion soon, so we can finish the specs with the highlighting of the buttons:p

If I understood your idea of iso639 now completely correct, please tell me, I'll try to reach Tobias (oggDS author) and ask him for the brackets-hide).

@Koepi
If [Toff]'s proposal of iso639 gets no enemies, I'll write it into the specs, so we don't need then a export-txt, but the iso639 written into brackets right after the stream-name into the ogm itself. Hopefully possible for you?

Regards
Raist

Koepi
6th September 2002, 19:04
That solution is odd :-/

It would require modifications by tobias, and then i have to support that.

I dislike it :)

Regards,
Koepi

[Toff]
6th September 2002, 19:14
@raistlin2k
Yes ! You get it !

@Koepi
and it's not odd :D
You must not modify the OggDS filter.

@Koepi & raistlin2k
If you do some hiding then the player will don't see the iso639 code ;)
But the player could hide it, there is no need to modifiate the directshow filter.
Moreover it's just a cosmetic thing.

And multilanguage can also be done, but then menu will take more space.

raistlin2k
6th September 2002, 19:44
Well, hiding would be very good, since oggds offers a context-menu in every DX-capable player (like WMP 6.4), there you see stream names, but I already mailed tobias about this, and moreover, as you said, it's only cosmetical, a real XCD player can hide it, too
(and who would use WMP6.4, if he can use a "XCD certifed Player":cool:?)

@Koepi
I'm really in favour of this now, even without modification of oggds it should work, all we need is a new combo-box in oggmux (or even 2, one for audio, one for sub), filled with those iso-short-forms.
All oggmux must do is to take input of those combo-box, place it into brackets and append it to the stream-name. PLEASE!!
;) ADD THIS!

For sure mutlilanguage-menus would result in bigger files, but nobody is forced to use it, but I guess, it should be available additionally, if we think of adding country-settings to the player.
Therefore we have to think about necessary modifications in the menu-file, for example

[L=%iso639] {eg [L=en] following pages are for the english menu}
[P=%Nr%]
[B=%Nr%]
...

All pages in the different languages should have the same numbers because of the predefined-pages like Start,Return...

Moreover we should define a standard-language, if the language in the country-settings of the player is not available in the movie.
Or just let it be the first audio-stream, the first page-set?

Another thought: There are two types of subs, one showing all spoken of a movie, and those only showing translations, like in Mummy egyptic speech.
The real DVD auto-selects such subs, old microDVD player didn't or only with a work-around (using microDVDautorun to enable show-first-sub on start of such microDVDs), we should improve here and let the player know if the sub is only for numbs or for translations.
Moreover XCD player should change such subs automatically when switching audio-language. (who wants to watch a movie in english and have translation egyptic-german?)

@Toff
You use vstrip.dll in your tool (like in Chapter-exractor)? Will it be able to split the menu-vob by Cell-ID? Because I heard vstrip can , but I prefer DVDDecrypter and this one lacks this feature.
(I'll mail Lightning_UK about this,too!)

Raist

[Toff]
7th September 2002, 00:04
ATM for splitting menu by cellid I use vstrip.exe
I think DVDDecrypter can do this also.
Tools->Settings->IFO Mode->Options->File splitting->By Cell
But I never used it.

I don't know if splitting would be used in the final version.
It would be great to keep the VOB file intact, and use an Avisynth script to extract the usefull part.
But I have a problem with DVD2AVI which is not accurate for menu decoding. It drop frames. I must test the new MPEG2 decoder plugin for avisynth by Nic.

About the multi-language format I don't really like the
[L=%iso639]
Because it doesn't show the hierarchy
[L=%iso639][P=%Nr%][B=%Nr%] Are at the same level.
But I have no better idea ATM.

kxy
7th September 2002, 02:35
How about a switch that can turn on subtitle by default? So that way if the movie is greater than 1CD, the user don't have to get up and turn the subtitle on for the 2nd CD or the 3rd CD, etc. Would this require a modification of tobias in the filter as well?

Koepi
7th September 2002, 03:52
That's the player-side. No need to change the filters.

raistlin2k
7th September 2002, 09:18
@Koepi
I thought about the modifications in Oggmux again, I really hope you will add the iso639-feature. If you do, I guess, it would be best to show in the combo-box (perhaps named "Player internal")not short-terms but the real-name in English, since this is a language everybody understands.

@kxy
Well, if we arrange it that the correct subtitle (containing translations) gets asigned to the right audio-stream, this will be done for all CDs of a XCD-set for sure, there is no need to set an extra-switch, I guess.

@Toff
Any idea, how we can arrange this with the different sub-types, or how to define that one audio & one sub should be used together by default?

About the [L=%iso], how about this:
]L=%iso%[
[P=%Nr%]
{B=%nr%}

I know that DVD2AVI drops frames,that's why I used old flask for that because it works accurate, but you have to search the start-&end-frames for yourself, hard job, that's where vstrip (or something like that) could really help by splitting the parts, so that every transcoder can convert the parts and at the end we re-arrange them into one file!

Raist

[Toff]
7th September 2002, 09:46
I know that DVD2AVI drops frames,that's why I used old flask for that because it works accurate, but you have to search the start-&end-frames for yourself, hard job, that's where vstrip (or something like that) could really help by splitting the parts, so that every transcoder can convert the parts and at the end we re-arrange them into one file!


Even when you split the vob, DVD2AVI can't be used to encode each part, it still drop frame.
It's bad because I love DVD2AVI :)
And when you encode splited part separately you doesn't have the benefits of 2 pass encoding. But the great thing is that all pages start with a key frame.

ATM, my tool create a .lst file with the list of splitted VOB to encode.
The page start & end frame are extracted from the ifo which give the duration of each cell in the menu.
It also create a file with a list of frame to be forced key frame.


About the [L=%iso], how about this:
]L=%iso%[
[P=%Nr%]
{B=%nr%}

I will prefer :
[[L=%iso%]]
[P=%nr%]
[B=%nr%]
So you minimize the number of control character used for parsing.

About subtitles no idea ATM.

raistlin2k
7th September 2002, 10:20
Do you have a DVD offering such subs only for translations? Could you check the ifo-file to find out how the player knows that this is a sub that shall be used by default?

Perhaps we should extend sub-streams iso639 following way (by offering an additional combo-box in oggmux; sorry, koepi):
2. Audio "English" (en)
3. Audio "Deutsch" (de)
4. Subtitle "English" (en[t])
5. Subtitle "Deutsch" (de[t])
[t] means translation, [n] means numb, so player should change sub to 4, when audio is switched to 2, and to 5 when audio is 3.


[[L]] is ok, already done.

the thing with the key-frames is the point why I want to split the vob, because for example I copied the menu of Star Wars Episode I, there are some pages that look quite similar, so that no keyfvrame was generated at the beginning of a new page, so jump to the start-frame didn't work dince it was no keyframe.

Raist

Blight
7th September 2002, 15:44
Ok, I'm here, I don't have the strength and time to read through all this thread as it keeps changing and debating, so ...

Ask me specific design questions and I'll do my best to reply. And DON'T use acronyms.

raistlin2k
7th September 2002, 16:18
Thanks Blight for joining in so quickly.

About highlighting, you have the bitmap mask for all buttons on the same page, and for each button you have an highlighting color defined in a table. Also I think you can do different effect type with this mask, you can fill it with a solid color, or do some alphablending effect.

IMHO the easiest way for the player would be to have 1 bitmap for each button. This bitmap can be extracted from the full page bitmap by using button coordinate. You can even make a comparison to eliminate identical button bitmap so you can save space when you have a lot of button with the same shape.
When you enter in a button zone, the player will have to read the button bitmap, resize it to the button zone size and do is graphical operation.


That's the question, Toff & me are unsure and wanted to ask you how it can be done. It's no good to define a spec that is very hard to support in a player that's why we want to do it the other way round, you tell us how you can support it easily and we define the specs that way.

Thanks for your help
Raist

Blight
7th September 2002, 17:14
I'm not sure what you're referring to by "button zones".

There shouldn't be a problem highlighting a button with a color by using Alpha Blending. I don't think you'd want to stretch a button graphics as the result would look ugly (since we're dealing with software not hardware scalers). Sure, you can scale every bitmap using biliniar scalers, but it'll make the interface sluggish somewhat.

It can of course be optional and taken care of by the player itself.

[Toff]
8th September 2002, 11:14
The menu is composed of a video and a script :

[P1]
Frames=592-1298
[B1]
Pos=327,317-577,352
[B2]
Pos=327,356-577,391
[B3]
Pos=327,395-577,430
[B4]
Pos=327,436-577,471

The script is divided in pages defined by a start_frame and an end_frame in the video, and each page can have several button defined by 2 points (top-left-corner,right-bottom-corner) in the orginal video size.

On DVD when you place your mouse on a button it can be highlighted. This information is stored for each page in one bitmap mask that can be extracted with subrip.
Here is an example :
Video : http://christophe.paris.free.fr/temp/matrix_menu.jpg
Mask : http://christophe.paris.free.fr/temp/matrix_menu_mask.png

We are asking ourself what is the easiest way for a player to support button highlighting.
Is it better to extract each mask button ? or keep the full page bitmap ?
Resizing is needed because the video is not always diplayed in it's original size. But the resizing is made on the mask so the quality is not important.

@raistlin2k
If we want to support this we may have to add an highligting color to the button. And maybe the operation to do (alpha blending, fill solid color, ...). We go into small details here.

There is something we have forgotten. The possibility to show a stills during a defined number of second. I think it's used on DVD for slideshow.

About "subs only for translations", I think it's called close-captioning and there is a thread about it in the subtitles forum.
I must read it ;)

Blight
8th September 2002, 16:36
This sounds bad.

Not all decoders support frame accurate seeking, not all decoders allow seeking while paused, you can't do frame-accurate looping of frame ranges without incurring quite a bit of CPU usage.

What do you mean by the mask can be ripped using sub-rip? You mean the DVD mask, or does the player need to somehow get a bitmap from the video stream itself?! This is not a practical method as inserting the SampleGrabber filter breaks overlay support.

You want the highlight to work on a playing video? This will require a special filter to be written and communicated to at all times! (what DVD Navigator does).

While this may be easy for porting DVD Menus, it's A BITCH to implement within a player as you'd basically have to write the entire DVD Navigator interface filter.

And unless you write it, and make it as accessible as the DVD Navigator filter, I personally will not support this.

I don't even think you can do it on a level of the DVD Navigator as the entire assumption when dealing with media files is different.

raistlin2k
8th September 2002, 18:37
Not all decoders support frame accurate seeking, not all decoders allow seeking while paused, you can't do frame-accurate looping of frame ranges without incurring quite a bit of CPU usage.

What do you mean? That it will not be possible? Old microDVD player was capable of doing so, we only had to provide that every frame-range starts with a key-frame. You don't think it will work?

Mask ripping with sub-rip is done on authoring site (extracting mask from a DVD), but how shall the mask be saved, as jpeg or as a frame inside of the menu-file.

To be honest, I'm not very good in specs of DVD, perhaps Toff can help with the highlight problem on playing video.
Otherwise, I think, we have to drop the idea of highlighting buttons.:(

Or are you, Blight, aware of another solution for this problem?

@[Toff] about still-period
Frame=x-y
When x=y > Still, additional line below:
Duration=%sec%

OK?

Raist

Blight
8th September 2002, 20:08
Any modification of the video stream is problematic, some content (MPEG2 using the WinDVD decoder for example) will NOT allow you to do it at all!

DivX 5.02 doesn't update the video image if you seek while paused.

If the user pauses the video, menu won't work anymore.

Basically you seem to be trying to define a standard without any experience with the actual process of what you're trying to achieve. Which is bad.

raistlin2k
8th September 2002, 21:41
Why PAUSE?

on a real DVD, menu can't be paused by the user, so why should he be able to do so on XCD?

I can't really follow you.

Raist

[Toff]
9th September 2002, 13:28
about highligting:
It's a small feature and it's hard to implement. So we can make it an option. If a player want to support it, it's possible to associate each button to a bitmap stored in a directory.
[P1]
Frames=592-1298
[B]{P1B1.bmp}
Pos=327,317-577,352
[B]{P1B2.bmp}
Pos=327,356-577,391
[B]{P1B3.bmp}
Pos=327,395-577,430
[B]{P1B4.bmp}
Pos=327,436-577,471
So there is nothing to put in the menu script, there is a direct relation between image name and button id.

Or we can add highlightmask, highlightcolor has optional line.
highlightmask=P1B1.bmp
highlightcolor=00AA99FF {first 00 for effect, 00 : fill, 01 : 50% transparency , ...}
I think it will be easier to do in DirectX9.


about frame accurate seeking:
Yes it can be a problem. We will have to use a correct decoders.
I will try to do some testing but there is a lot of thing to test so it can take some times.
In the worst case we can try to modify the ffdshow filter.


about still-period:
Duration=%sec%
Ok, and %sec% == 0 mean infinite time.

raistlin2k
10th September 2002, 10:34
About Highlighting & multi-language-menus

Are the buttons (and so the masks) always at the same position for all languages on a DVD, can we be sure about this? If so, we can use mask P1B1.bmp for button1 on every page1 in each language (& save space:)), but IF NOT, we have to change name to L1P1B1.bmp!

So we'll save each masks as one bmp & not whole page-mask at once.
Since I'm not very experienced with Subrip, is there a way to let it split the page into different bmps using ifo-info. All I know is that it uses ifo for language-showing of the sub-rips.

If Subrip doesn't support this, I will try to contact author & ask him if he can add this. Or are you, Toff, aware of another way?

Raist

[Toff]
10th September 2002, 12:03
Yes, I forgot language, L1P1B1.bmp is better.


So we'll save each masks as one bmp & not whole page-mask at once.

I think it will be easier for a future hypothetical support.


is there a way to let it split the page into different bmps using ifo-info

I don't think so.


If Subrip doesn't support this, I will try to contact author & ask him if he can add this. Or are you, Toff, aware of another way?

No I don't know other way. Or I must do it myself :)
That's not a priority.

about frame accurate seeking:
The Ogg DirectShow filter seek very well on KF.

raistlin2k
15th September 2002, 12:23
@Toff

Please visit this posting:
http://forum.doom9.org/showthread.php?threadid=29317&goto=newpost
It seems that OGM already offers such a standard for selecting default language. Please have a look at it, perhaps we can leave ISO639 & switch to LCID, would mean less work for Tobias & Koepi.

I already mailed Tobias, that all we would need is an additional string showing the personal string like "Francais", while "French" is used for LCID-identification by the player.

You can also have a look at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dx8_c/directx_cpp/htm/workingwithlcidsscript.asp

This is the link to the LCID-codes.

I think your highlight-mask-string is really not needed if we use standard-names for the masks (hopefully, SubRip can extract them directly in future versions:p) , but How about the highlight-color?
Do you really think this is only optional, but not obligatory?

I'm really happy, seems that specs are almost finished, just the thing with highlight-color & LCID vs. ISO639, we'll see!

Again, thanks for all help
Raist

[Toff]
15th September 2002, 16:17
It seems that OGM already offers such a standard for selecting default language. Please have a look at it, perhaps we can leave ISO639 & switch to LCID, would mean less work for Tobias & Koepi.

I already mailed Tobias, that all we would need is an additional string showing the personal string like "Francais", while "French" is used for LCID-identification by the player.

If we can get all the info we need with this I see no problem.
But how to differenciate French from French director's comments ?

Extra info available on DVD for subtitles :
not specified, normal, large, children, normal captions, large captions, childrens captions, forced, director comments, large director comments, director comments for children
Extra info available on DVD for audio :
not specified, normal, for visually impaired, director comments, alternate director comments


But How about the highlight-color? Do you really think this is only optional, but not obligatory?

You can make it optional for player who don't want to support button highlighting.
Or the player can just ignore it (maybe easier).

Something new :
If you want to play extra, an action to play another file would be great.
Action1=9(extra1.ogm)
Or where are stored infos about extra feature ?

raistlin2k
16th September 2002, 09:32
Tobias offered to support both, LCID & ISO639 that way, that filter translates all ISO639 inside of OGMs into LCID for the player, very nice,although I'm not quite sure if we really need then the iso-codes. It would be just to comply with all standards, but since only LCID is given to the player, I don't see a real advantage in using both, just confusing for the home-user and work for Tobias & koepi.

About the additional info about streams (commentary / caption):
Like in LCID, there is no spec for that in ISO630, is it? So there is again no advantage of ISO639 over LCID??

So we need a new ID additionally to LCID, I guess?
Tobias offered to integrate it like that:
Espa˝ol[spa][C]

But now we need an interface to communicate with the player, any idea, Toff? Tobias wrote he will think about it, bur perhaps we can help him anyway since he is already doing a lot for us.

Raist

[Toff]
16th September 2002, 13:45
I see no problem using LCID if it's easier.
If I need iso639, conversion are quite easy to do.

But how you use LCID ? with the code or the string ?
"French" or "0x040c"
If you use the string, user will be tempted to make typo error ;)


Like in LCID, there is no spec for that in ISO630, is it? So there is again no advantage of ISO639 over LCID??

no advantage here.



So we need a new ID additionally to LCID, I guess?

Yes


Tobias offered to integrate it like that:
Espa˝ol[spa][C]

I suppose it's :
user definable string[iso639-2_code][language_extension_code]
It's sounds great to me.
Also there is a lot of code in iso639-2 ! Using iso639-1 maybe easier.
how language_extension_code is defined ?



But now we need an interface to communicate with the player, any idea, Toff? Tobias wrote he will think about it, bur perhaps we can help him anyway since he is already doing a lot for us.

I'm not a DirectShow expert, and I have no idea :(

raistlin2k
16th September 2002, 16:36
I think that the drop-down list of languages offered in OggDS (or OggMux) is already the LCID-one. So user has to choose from a drop-down-list the LCID, Tobias will add an additional field for the user definable-string, that's all, so no problem with type error!

I don't know if it's ISO639-2 or -1, depends again on Tobias. Altough I guess it might get somehow complicate to offer both, iso & LCID, how shall these be arranged in the combo-box? Do we really need two possible eg "English" in the drop-down, one with LCID & one with ISO, sounds somehow too much.

So I think it would be easier to stick with only one standard

eg user definable string [LCID] [Language_extension_code]

about that extension code:
actual, there is only one possible parameter for audio & sub each:
[C] in audio indicates commentary
[T] in sub indicates translation, means caption, but I guess using T for translation is better, how many people know that caption is the correct word for such "translation"-subs. Moreover we could get in conflict with [C] from audio-streams.

Cheers
Raist

raistlin2k
3rd October 2002, 19:58
Hello, just wanted to say I'm back (had my big test yesterday) I look forward to release a modified spec-file including all things discussed here in the next days, hope we can finalize it then, so that we can handle it over to the authors of the XCD-players to get cool XCD-menus very soon:)

BTW, as already reported here in the forum, Tobias added support for the Iso639-standard being part of XCD-menu-spec in his latest oggDS-release, he is really a great guy, always taking care of our wishes.

So, thanks to all helping me in setting up those specs, especially
Tobias & Toff.

Cheers
Raist
P.S. It's so good to be back.

raistlin2k
24th October 2002, 09:22
After having printed out the whole thread, so I don't miss anything, I re-read the whole thread and checked my latest spec-file.

Now it's done, I hope everybody feels fine with this one, if not, please tell me, as long as their is no player supporting this, we can modify it without problems, afterwards we have to archieve downwards-compatibility.

@[Toff]
By reading all the printed, I found one request of yours, I forgot till now, the action9 offering playback of extra-feature. Well it was already there as feature 6. Taken from mdvd.ini, it just worked another way, all specials were mentioned in the menu-file (like audio&sub as well), but we don't have this info in XCD-menu-file, so I changed feature6 to your proposal. Thanks for the advice.

Raist

[Toff]
24th October 2002, 15:13
So, where are those sweet latest spec, I don't see any attachement ;)

raistlin2k
24th October 2002, 16:10
Don't know, checked my posting with "edit", attachment is there.
Perhaps we have to wait for admin?!?
Raist

BlackSun
25th October 2002, 10:17
Originally posted by raistlin2k
Don't know, checked my posting with "edit", attachment is there.
Perhaps we have to wait for admin?!?
Raist

yup, it may contain malware :) So we test and infect our comp for your safety :)