Bedienung von IfoEdit

  • Da ich momentan auch ein bisschen mit IfoEdit arbeiteite, nutze ich mal das aktuelle Thema.


    Könnte mir einer erklären wie ich an die Stream ID's von Audio und Untertiteln komme?


    Wenn ich die IFO(Datei im Anhang) in IFOEdit lade und im oberen Auswahl-Feld den 1. Eintrag auswähle erhält man in der 2. Ansicht eine Übersicht (VTS Overview).
    Bei "Title Set (Movie) attributes:" findet man dann 3 Audiospuren.


    Die 1. Spur hat zwei StreamID's 0x80 und 0x83
    Die 2. Spur hat hat eine höhre streamID als die 3. Spur, also irgendiwe vertauscht.


    Bei den Untertiteln sind die StreamID's noch "komplizierter" verteilt und auch doppelt vorhanden.


    Allerdings finde ich nirgends so richtig die Bytes, welche ich für diese Info auslesen müsste.


    Lg
    hubble

  • Da ich momentan auch ein bisschen mit IfoEdit arbeiteite, nutze ich mal das aktuelle Thema.


    :nein: Das war aber ein Thema, in dem es ausschließlich um die Versionsnummern ging. Deshalb also dieses abgetrennt als eigener Beitrag.


    Die 1. Spur hat zwei StreamID's 0x80 und 0x83
    Die 2. Spur hat hat eine höhre streamID als die 3. Spur, also irgendiwe vertauscht.


    Etwas merkwürdig. In einer DVD Video hat eine Audiospur eigentlich auch immer nur eine Stream-ID, da ja immer nur eine Audiospur ausgegeben wird. Bei Subpicture-Spuren könnte es Alternativen je nach Bildschirmformat geben (Untertitel für Widescreen oder Letterbox).


    Die höhere Stream-ID wäre nicht schwer zu erklären, wenn das keine AC3-Spur wäre. 0x80-0x87 = AC3, 0x88-0x8F = dts (oder allgemein Direktausgabe-Formate), beide als Sub-Streams im "Private Stream 2". Außerdem gäbe es noch MP2 oder PCM, die dürften 0xA# oder 0xC# haben, wenn ich mich recht erinnere, diese als Haupt-Stream.


  • Etwas merkwürdig. In einer DVD Video hat eine Audiospur eigentlich auch immer nur eine Stream-ID, da ja immer nur eine Audiospur ausgegeben wird. Bei Subpicture-Spuren könnte es Alternativen je nach Bildschirmformat geben (Untertitel für Widescreen oder Letterbox).


    Ich dachte das wäre normal, wenn ein Stream mehrere IDs haben kann. Denn im 3. Titel des PGCs ist ganz klar zu sehen das bei den Audio Streams der stream mit der ID 3 verwendet werden soll. (ID's beginnen bei 0 , also 3.ID ist 0x83). Da es aber nur 3 Audio spuren gibt wäre also 0x83 nicht wirklich zugeordnet. Da aber diese ID auch zum 1.Audio stream gehört passt es wieder.



    Die höhere Stream-ID wäre nicht schwer zu erklären, wenn das keine AC3-Spur wäre. 0x80-0x87 = AC3, 0x88-0x8F = dts (oder allgemein Direktausgabe-Formate), beide als Sub-Streams im "Private Stream 2". Außerdem gäbe es noch MP2 oder PCM, die dürften 0xA# oder 0xC# haben, wenn ich mich recht erinnere, diese als Haupt-Stream.


    Mit höherer "Stream-ID" meinte ich eigentlich nur das 0x82 vor 0x81 kommt, also eben vertauscht. Aber danke für die Erklärung, denn diese anderen Werte werden mir sicher auch noch über den Weg laufen.

  • Ohne den rest kann ich nur vermuten dass die VTS mehreren PGCs beinhalten welche unterschiedliche Streams haben einige davon mit denselben IDs.


    Aber wie gesagt, das ist Offtopic.


    Welchen Rest meinst du?


    Also die IFO ist von der Aliens DVD. Das ganze ist mit seamless branching aufgebaut, da zwei Versionen des Films vorhanden sind.
    Title 1 ist die Kino Version mit zwei AudioSpuren (English,Deutsch). In MPC-HC werden zwar drei Audio spuren angezeigt aber man kann die 3. Spur nicht auswählen/aktivieren.


    Title 2 ist der Directors Cut und der hat noch die 3.Audiospur (Directors Comment) an Board.


    Title 3 ist nur ein Vorspann video welches bei dem 1. und 2. Title abgespielt wird. In der IFO im Table PGC->AudioStreamControl befinden sich auch die entsprechenden Bits welche als Audio StreramID die nummer 3 hat(was ja der 4.Audiostream sein sollte, den es aber nicht gibt).


    EDIT:
    Im Anhang befindet sich ein backup ordner von PgcEdit.

  • Es ist eine double-indexierung.
    Jede VTS kann maximal 8 Streams beinhalten. Die müssen nicht nacheinander folgen, also 80, 81, 82, sondern wie der Autor will. ZB in PGC2 hast du die folgende Reihenfolge: 80, 82, 81. In PGC1 hast du nur 80 und 82. Weil PGC1 und 2 demselben Film gehören und auch viele Zellen beiden PGCs gehören, müssen die Audiostreams 80 und 82 genau dasselbe und genau in diese Reihenfolge sein. Audiostream 81 ist wahrscheinlich DirComm, und es kamm natürlich an 3. Platz.
    PGC3 hingegen benutzt ein anderes EN Audiostream, der soll aber an erster Platz sein. AudioID ist aber anders, 83. Natürlich könnte wieder 80 sein, weil sich die einzige Zell nicht in PGC1/2 befand.


    Was willst du eigentlich wissen?

  • Ich würde gerne hier auf deutsch mit dir weiter reden.


    Also deine Erklärungen hier und im englishen Doom9 sind nicht exakt das was ich suche, denn die Reihenfolge und die Verteilung der streamID's auf die Spuren ist mir soweit klar.


    Ich muss aus einer IFO eben besagte streamID's ermitteln um später die benutzen Audio Spuren zu identifizieren.


    Also ich parse einen PGC-Title und dort erhalte ich die Info: AudiostreamID 0 und 2 wird verwendet. Aber eben mit diesen Indexen an sich kann man ja nicht viel anfangen. Daher schaut man nun in die vorhandenen Audio-Spuren, wählt Index 0 oder 2 und hat somit alle weiteren Infos (Codec, Channels usw.)


    Wenn also IFOEdit diese IFO parst dann wird ja irgenwie ermittelt welche streamID's zu einer bestimmten Spur gehören. (Eben so wie es in der VTS Overview zu lesen ist)


    Da ich eben auch nur die IFO parse würde ich gerne wissen wie es IFOEdit macht. Es sind ja nur bestimmte Bytes die ausgelesen und interpretiert werden müssen.

  • Genau, byte offset 12 (3B Grösse) und folgende in der PGC Tabelle hat, reihenweise, die Audiostreams: in dem Fall des PGC2s 80 (also 32768), dann 82 (also 33280) und schließlich 81 (33024), die nächsten 5 B sind NULL weil keine Audiostreams mehr. Diese müssen nicht 80, 81, 82 usw geordnet.
    Willst du einen Parser programmieren?

  • Hiho


    Ja genau, dort stehen die Infos für die IDs, und wie man das alles parst/ausliest ist auch kein problem (IFO Parsing ist doch nicht so schwer wie ich anfangs dachte).


    Alles klappt ja auch soweit ganz gut, aber eben der 3.PGC-Title ist die "komische" ausnahme.
    Denn dort findest du für den Audio-Track folgende Bytes: 33536 -> hier erhält man ganz klar streamID 0x83, was wiederum auf eine Audiospur verweist mit der ID 3(also ein 4. audio track).
    Es gibt aber keinen 4. Audiotrack!! Es wird Audio Track 1 (mit ID 0) verwendet. Zumindestens kann ich das so aus IFOEdit ablesen.


    Selbst in PgcDemux wird diese "4. Spur" angezeigt(im Log).



    Ich habe in meinem chapterEditor bereits IFO-Parsing eingebaut, aber in der neuen Version muss der Parser etwas verbessert werden damit ich aus Multi-Angle- und Multi-Versionen DVD's, multi-Versionen/Angle mkv's erstellen kann.


    Dazu möchte ich versuchen das auch für Linux zu tun und dort laufen ja nicht alle Windows programme, daher versuche ich alles was geht an Infos selbst zusammeln.

  • Nein. Es ist nicht den 4. Audiostream, sondern den 1. Warum?
    Weil PGC 3 komplett anders ist als PGC1 und PGC2 die teilweise dieselben Zellen nutzen.
    Weil der Audiostream 83 auch Englisch ist. Man könnte ihn auch als 80 im PS benennen. Der Autor/Software wollte es so.


    Es spielt wirklich keine Rolle "wer ist wer nach deiner Meinung" und welche ID ein Stream hat, solang es ist kristallklar "wer ist wer". Für Computer sind es reine Nummer, Bytes.


    Beispiel: man klickt play und wählt theatrical (sagen wir PGC1) und Englisch (audio 1). Der Player gehe zu VTS1 (oder wo der Hauptfilm ist) und liest die Tabellen. Nimmt den PGC1 und sieht in dessen Tabelle welcher Stream muss er vom PS-payload extrahieren. Am 2. Platz steht 80.
    Der PGC3 wird niemals abgelesen während der Film abläuft. Es ist irrelevant was sich drin steckt. Und umgekehrt: wenn der Trailer (oder was PGC3 ist) abgespielt wird, sind PGC1 und 2 nicht abgelesen. Ja, klar, man nimmt wieder einige schon belegte IDs, weil ein Domain nur 8 Audiostream aller art beinhalten darf.

  • PS = Program Stream (das format des DVD-Daten)


    Ganz einfach - die $83 ID befindet sich am 1. Platz in der PGC3 Tabelle :) Wäre sie am 2. Platz würde sie denn als Audio 2 erkannt (Audio 1 fehlte in dem Fall, nichts tragisch, die Tabellen dürfen Lücken haben, wie zB DVDShink uns zeigte :) ).

  • PS = Program Stream (das format des DVD-Daten)


    Ganz einfach - die $83 ID befindet sich am 1. Platz in der PGC3 Tabelle :) Wäre sie am 2. Platz würde sie denn als Audio 2 erkannt (Audio 1 fehlte in dem Fall, nichts tragisch, die Tabellen dürfen Lücken haben, wie zB DVDShink uns zeigte :) ).


    Ahhhh, alles klar. Das war das letzte Puzzelstück was mir fehlte und das es lücken geben kann wusste ich auch nicht.
    Jetzt kann ich es richtig proggen.
    Recht vielen Dank für deine Erklärungen hier und im englishen forum.

  • hubblec4  
    Habe gerade im englischen Forum über deine Fragen gelesen
    gibts noch Fragen oder alles klar?


    Danke der Nachfrage.


    Um ganz ehrlich zu sein, 100% noch nicht. Ich werde mir sicher die englishen antworten noch paar mal durchlesen müssen, um alles zu verstehen.


    Also wo ich in der IFO an die Track information komme ist klar.
    Auch klar ist, wo die Info's in der "Audio/Sub Stream Control" Tabelle zu finden sind. Allerdings verwirren mich dort noch ein wenig die "Zahlen-werte" die ich erhalte.
    Die streamID's erhalte ich mit MTX identify mode(sind auch immer die selben welche PgcDemux anzeigt und auch die in IFOEdit(VST-Overview)).
    Allerdings scheint die Trackreihenfolge in den vob's eine andere zu sein und damit stimmen dann die Infos aus der IFO nicht mehr überein.
    Mein DVD2mkv editor findet dann die passenden Dateien nicht, da falsche ID's im Namen enthalten sind. (Ich hatte damals keine multi-versionen DVD beim coden um das zu prüfen).


    Für "normale" DVD's funktioniert es ja soweit. Die Tracks liegen in der VTSI_MAT in gleicher reihenfolge vor wie in den Vob's.
    Daher habe ich die streamID's vernachlässigt, was sich nun als falsch herrausstellt.

  • Die ist der MTX identify für die Aliens DVD vobs:


    Audio 1 - English
    Audio 2 - Kommentar
    Audio 3 - Deutsch


    In der VTSI_MAT ist die Reihenfolge eine andere


    Audio 1 - English
    Audio 2 - Deutsch
    Audio 3 - Kommentar


    Und eigentlich ist nur das mein Problem, hoffe ich.

  • Alien DVD hat streamID's welche nicht einmal in der Audio Stream Control(ASC) vorkommen.


    Da gibt es einen Deutschen DTS ton der eine 0x89 ID hat. In der ASC findet man aber an der Position für den Audio Track eine 1 als ID.


    Und die Spurreihenfolgen sind auch unterschiedlich (IFO zu vob).


  • Das ist klar.


    Wenn es AC3 wäre, hätte es Sub-Stream-ID 0x81 im Private Stream 2; bei dts kommen 8 dazu, also 0x89. Ein MPEG-Audio-Stream hätte ProgramStream-ID 0xC1.


    Überraschend ist, dass für MPEG-Audio-Streams die IDs 0xC0-0xDF reserviert sind, obwohl Authoringtools nur 8 Audio-Streams unterstützen (SET SPRM 1).

  • Daten in DVD Vobs sind in PES Packs verteilt
    MPEG Video Stream hat immer PES-ID 0xE0


    MPEG Audio Stream hat PES-IDs von 0xC0 bis 0xC7


    NAV-Packs in PES-ID 0xBF


    Nicht-MPEG Audio und Untertitel finden sich in Private Stream 1 Packs mit PES-ID 0xBD und Sub-stream IDs
    Sub-stream 0x20 bis 0x3f sind Untertitel
    Sub-stream 0x80 bis 0x87 sind AC3 audio
    Sub-stream 0x88 bis 0x8f sind DTS audio
    Sub-stream 0xA0 bis 0xA7 sind LPCM audio


    In deinem Fall 4 VOB-Audiostreams
    1 Ac3 6ch 0x80 (Stream 0)
    2 DTS 6ch 0x89 (Stream 1) (89 weil DTS und zweite Spur, siehe oben)
    3 Ac3 2ch 0x82 (Stream 2)
    4 Ac3 6ch 0x83 (Stream 3)


    Nun zu den IFOs


    In der VTSI_MAP werden nur die Attribute der jeweiligen Spuren definiert
    Es werden in den PGCs später nur Streams mit den zur Spur passenden Attributen gemappt


    Code
    1. Number of audio streams in VTSTT_VOBS 4 [04]Aud_1: audio attributes 4 197 101 110 0 0 0 0 [04 c5 65 6e 00 00 00 00 ] Audio attribute details: Application mode unspecified Language type present Multichannel extension not present Coding mode AC3 Channels 6 Sample Rate 48Kbps Quantization/DRC  DRC (dynamic range control) Language English Language extension [00] Code extension (Audio Type) unspecified ........


    In der VTS_PGCITI werden nun in den jeweiligen PGCs die Spuren gemappt
    VTS_PGC_1

    Code
    1. Audio stream 1 status 32768 [8000] Audio stream 1 uses stream nr.: 0 Audio stream 2 status 33536 [8300] Audio stream 2 uses stream nr.: 3 Audio stream 3 status 33024 [8100] Audio stream 3 uses stream nr.: 1 Audio stream 4 status 33280 [8200] Audio stream 4 uses stream nr.: 2


    beim Mapping werden nicht die HEX Bezeichnungen der Substreams aus den VOBs verwendet
    sondern deren Entsprechungen von 80 bis 87


    Audio 1 verwendet VOB Stream 0
    Audio 2 verwendet VOB Stream 3
    Audio 3 verwendet VOB Stream 1
    Audio 4 verwendet VOB Stream 2


    VTS_PGC_2

    Code
    1. Audio stream 1 status 32768 [8000] Audio stream 1 uses stream nr.: 0 Audio stream 2 status 33536 [8300] Audio stream 2 uses stream nr.: 3 Audio stream 3 status 33024 [8100] Audio stream 3 uses stream nr.: 1


    VTS_PGC_3

    Code
    1. Audio stream 1 status 33536 [8300]
    2. Audio stream 1 uses stream nr.: 3


    LigH
    Die Reservierung bis 0xDF ist in den MPEG2 Spec, da auf DVD nur 8 Audiospuren möglich -> 0xC0-0xC7