PgcEdit et navigation

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • boursicot
    Gold Member
    Gold Member
    • Apr 2006
    • 118

    PgcEdit et navigation

    Bonjour

    J'ai enregistré plusieurs épisodes d'une série TV, que je veux réunir sur un seul DVD. Chaque épisode a bien entendu été diffusé avec un générique de début. Sur le DVD, si je regarde plusieurs épisodes d'affilée, je souhaite que le générique n'apparaissent qu'au premier épisode sélectionné (donc celui à partir duquel je visionne le DVD), et plus entre deux épisodes.
    J'ai coupé le générique que j'ai mis dans un vob indépendant.

    J'imagine donc le déroulement suivant :
    - lecture du menu
    - choix de l'épisode de départ
    - lecture du générique
    - lecture de l'épisode choisi
    - lecture de l'épisode suivant
    - etc.

    Je pense (mais je suis très loin d'être un spécialiste, et mes souvenirs informatiques commencent à dater) qu'il faut mettre en place un système de drapeaux du style :
    - au début, drap=0 (par exemple)
    - choix de l'épisode de départ
    - l'IFO de cet épisode teste drap :
    - si drap=0 : - appel du générique (comme un sous-programme),
    - mise du drapeau à 1
    - si drap=1 : pas d'action particulière
    - lecture de l'épisode choisi
    - lecture de l'épisode suivant (comme drap=1, le générique ne sera donc pas "appelé")
    - etc.

    Qui peut m'expliquer comment je peux faire ?.
    Ma démarche ci-dessus est-elle correcte ?
    Si oui,
    - comment met-on en place ce système de drapeau ?,
    - peut-on "appeler" un titre comme un sous-programme, celui-ci se terminant par une instruction "return", qui renvoie alors là où il a été appelé ?.

    Merci par avance de votre aide.
    Bonne journée
  • r0lZ
    Lord of Digital Video
    Lord of Digital Video
    • Mar 2004
    • 1508

    #2
    En gros, ta méthode est bonne.


    Malheureusement, le langage des DVDs est trrrrès pauvre. Pas de sous-routines, donc pas de return. (Il y a l'instruction RSM (Resume) qui y ressemble, mais elle ne permet que de retourner au point ou on a interrompu la lecture d'un title pour aller dans un menu.)

    Les variables à utiliser dans un DVD sont les GPRMs. Il y en a 16 (GPRM(0) à GPRM(15)). Tu peux te servir d'un de ces GPRMs comme drapeau. Il y a aussi des SPRMs, qui sont utilisés (et réservés) par le player. On peut les lire, et écrire certains d'entre eux, mais chaque fois avec une commande spécifique.

    De plus, il est interdit de sauter d'un titre directement dans un autre, si ceux-ci ne sont pas dans le même VTS (donc, si ils sont dans des VOBs différents.) Dans ce cas, il est nécessaire de sauter dans un PGC du VMGM (dans VIDEO_TS.IFO), et de repartir de là vers le VTS contenant le titre à jouer. Je te conseille donc, en plus de ta méthode, d'utiliser un autre GPRM pour conserver le numéro du dernier titre joué. En comparant ce GPRM, tu peux sauter automatiquement au prochain titre depuis le VMGM.

    Aussi, attention au fait que les commandes ne sont généralement pas valides partout! Par exemple, il faut utiliser une instruction Call pour sauter d'un titre dans un menu, et un Jump pour sauter d'un menu dans un autre menu ou un title, ou d'un titre à un autre titre du même VTS! Fais gaffe à ça, car certaine players acceptent à peu près n'importe quoi, mais d'autres vont se bloquer si ils trouvent des commandes illégales!

    Comme point de départ, je te conseille (si ce n'est déjà fait) de produire un DVD de base avec l'intro et les 6 épisodes avec DVD Shrink. Il a adopté une méthode relativement simple pour jouer automatiquement les titres l'un après l'autre. (Il utilise le GPRM(0) comme index du titre à jouer.) Essaye de comprendre comment ça marche avec PgcEdit en mode trace. Tu peux aussi, par après, utiliser le plugin DVD Shrink pour améliorer les possibilités de navigation, et analyser ce qui a changé. Ça t'apprendra beaucoup de choses.

    Il te sera aussi possible d'importer ton menu, avec PgcEdit. Je te conseille de l'importer dans le VMGM, car c'est nettement plus facile à gérer, mais n'oublies pas que ce menu doit être appelé avec la touche Title Menu, et non avec la touche Root Menu (ou Menu tout court.) Il te faudra probablement aussi changer le type de menu de RootM vers TitleM. Après avoir importé ton menu, tu devras bien sur revoir les commandes, mais à ce stade, ça ne devrait pas être trop compliqué.


    Lis aussi la doc (en anglais) chez DVD Replica. C'est une assez bonne introduction, quoi qu'incomplète.
    Last edited by r0lZ; 26 Dec 2006, 10:58 PM.
    r0lZ
    PgcEdit homepage (hosted by VideoHelp)
    Unofficial mirror (in Poland)

    Comment

    • boursicot
      Gold Member
      Gold Member
      • Apr 2006
      • 118

      #3
      Bonsoir

      Merci beaucoup pour toutes ces explications, mais ça m'a l'air un peu compliqué pour moi. Vivement que ton logiciel soit traduit sur trad.fr !!!.
      En fait, j'ai du mal à me représenter ce que signifie exactement les termes comme PGC, LU, VID, CID ... Connaîtrais-tu un site qui explique tout cela (de préférence en français) ?.

      J'ai un DVD avec plusieurs flux audio et de sous-titres. Que dois-je faire pour indiquer à ma platine que par défaut, elle doit lire tel flux audio, et tel flux de ST ?.

      Merci et bonne soirée (pour ce qu'il en reste).

      Comment

      • boursicot
        Gold Member
        Gold Member
        • Apr 2006
        • 118

        #4
        Une autre petite question : peut-on ajuster le volume d'une piste audio grâce à PgcEdit ?

        Comment

        • r0lZ
          Lord of Digital Video
          Lord of Digital Video
          • Mar 2004
          • 1508

          #5
          DVD-Replica est quasiment le seul site qui explique ce genre de chose. Il y a aussi le site DVD-Video Information de mpucoder, beaucoup plus technique, plutôt réservé aux programmeurs, et pas gratos.
          A ma connaissance, il n'y a absolument rien en français.

          J'espère qu'il y aura un jour une doc pour PgcEdit qui explique aussi un peu les bases. Si j'ai le temps, je la traduirai en français. Pour le moment, un gars est en train de voir s'il peut traduire le programme proprement dit, mais ça prendra du temps!

          Pour spécifier quelle piste son et sous-titre il faut jouer, utilises l'instruction SetSTN. Mais le tout est de savoir où la placer! En principe, tu peux la mettre après toutes les pre-commands du Titre (donc, dans PgcEdit, juste avant le label "*** post-commands"), mais il y a des exceptions. Essayes, et si ça ne marche pas, poste un message ici...

          Le volume du son est encodé dans la piste son et ne peut pas être modifié par programmation. La seule possibilité est de démultiplexer les VOBs, éditer le fichier son (difficile pour l'AC3 ou le DTS, faisable pour le MP3, et facile pour le WAV), le ré-encoder dans un format compatible DVD, et re-multiplexer le tout. Pas vraiment facile, et il y aura probablement une légère perte de qualité.
          Dois-tu vraiment faire ça?
          r0lZ
          PgcEdit homepage (hosted by VideoHelp)
          Unofficial mirror (in Poland)

          Comment

          • boursicot
            Gold Member
            Gold Member
            • Apr 2006
            • 118

            #6
            Bonjour et merci pour ces réponses.
            Dans mon projet, je suis parti d'un DVD avec menu et j'ai voulu remplacer les titres par d'autres (avec Replace VTST Titles). J'y suis parvenu mais je me suis rendu compte que je ne pouvais plus naviguer dans le titre : accélération avant et arrière OK, mais je ne peux plus aller directement à une position (30mn 30s par ex.). Il y a-t-il une manip à faire pour retrouver cette possibilité de navigation ?.

            Bonne journée

            Comment

            • boursicot
              Gold Member
              Gold Member
              • Apr 2006
              • 118

              #7
              Je viens de faire le test pour lire un ST par défaut : ça marche.
              Je me suis servi des gprm pour faire une navigation comme je voulais : ça marche également. Je n'ai peut-être pas utilisé la méthode la plus élégante, mais le principal ... Une interrogation cependant : apparemment, lorsqu'on veut sauter d'un menu dans un titre en fonction d'une condition (if), cette condition ne peut que comparer 2 gprm, et non pas un gprm à une valeur. Me confirmes-tu cela ?.

              Il ne me manque plus que deux choses pour que mon projet soit finalisé.
              - la première, c'est l'accès à une position dans un titre (message précédent),
              - je vais tenter d'expliquer la deuxième : sur certains DVD dont le générique est en anglais, il apparait une image fixe avec le titre en français avant la lecture du film. Il semblerait (mais c'est toi le spécialiste) que seulement une image soit enregistrée dans le vob, et que ce soit l'ifo qui "dise" que cette image doit être lue pendant 5 secondes (par exemple). Comment faire pour rentrer cette instruction (et quelle instruction) dans l'ifo.

              Merci beaucoup par avance de ton aide.

              Comment

              • r0lZ
                Lord of Digital Video
                Lord of Digital Video
                • Mar 2004
                • 1508

                #8
                Tu as probablement importé des Titles qui proviennent d'un enregistreur de salon. C'est ça?

                Il peut y avoir plusieurs causes:
                • PUOs (Prohibited User Operations) dans les IFOs
                  Les PUOs (ou PUOps) empêchent l'utilisateur d'utiliser telle ou telle fonction de la télécommande pendant le playback. Pour les modifier, double-click sur le PGC du titre à modifier pour ouvrir le PGC Editor. Si les Prohibited User Operations sont à 0, pas de problème. Sinon, un clic sur le bouton te permettra de les changer sélectivement. Les PUOs qui t'intéressent sont "Title Play or Search" et "Time or PTT Search".
                • PUOs dans la Title Play Map Table
                  Il peut y avoir aussi 2 PUOs définis pour les Titles dans la Title Play Map table. Tu peux les modifier avec Title -> Title Play Map Table. Fais-y attention, car ce sont justement ceux qui nous intéressent.
                  Note que tu peux facilement effacer les PUOs de tous les endroits où il peut y en avoir dans les IFOs avec DVD -> Filter Prohibited User Operations. Attention: il n'est généralement pas conseillé de les retirer tous aveuglément dans les domaines de menus (VMGM et VTSM.)
                • PUOs dans les VOBs
                  Et il y en a encore dans les VOBs! PgcEdit ne permet pas de les modifier cell par cell, mais tu peux facilement les virer avec le PUO plugin. Installe le plugin, et utilise Plugins -> Prohibited User Operations -> Selectively Clear VOB PUOs.
                  J'ai personnellement configuré DVD Decrypter pour qu'il retire automatiquement les PUOs des VOBs (mais pas des IFOs à cause des menus) lors du rip. Je te conseille de faire de même. Par défaut, DVDD ne change aucun PUO.
                • Time Map manquante ou mauvaise
                  La Time Map d'un Title permet au player de savoir approximativement où il doit sauter dans les VOBs pour aller à un timing précis. Si cette table est manquante, il ne peut évidement pas le faire. Tu peux reconstruire la table d'un Title avec Title -> Rebuild Time Map of Current PGC (ou VTS pour reconstruire toutes les time maps du même VTS). Plus facile: DVD -> Rebuild All Time Maps of DVD. C'est relativement lent, mais je conseille de le faire de toutes façons.
                  Note qu'il y a un plugin qui te permet de vérifier la présence et la validité de chaque time map du DVD.
                • Titles "not-one_sequential" (pas joués en séquence)
                  Un Title non-séquentiel n'est pas sensé avoir de Time Map (même si la présence d'une Time Map ne gène pas, et permet même à certains players pas trop regardants sur le standard d'utiliser les fonctions de saut à un timing précis.)
                  Un Title est considéré non-séquentiel si il est distribué sur plusieurs PGCs (donc que plusieurs PGCs du même VTS ont le même numéro de TTN.) De même, un Title qui est joué en mode random ou shuffle n'est pas séquentiel. (Les drapeaux random et shuffle sont visibles dans le PGC Editor.) Mais il arrive parfois qu'un Title sont marqué comme non-séquentiel dans les IFOs sans raison valable. Tu peux le vérifier avec Title -> Title Play Map Table. Mais attention: ne change pas ce drapeau sans être sur que le title est réellement séquentiel. De toutes façons, les fonctions Rebuild Time Maps le changera automatiquement au besoin.
                • Présence de Prev/Next/GoUpPGCN links (avec certains players seulement)
                  En principe, les PrevPGCN, NextPGCN et GoUpPGCN links ne peuvent être différents de 0 que dans un titre non-séquentiel. Certains players considèrent donc le titre comme non-séquentiel si un de ces links est > 0, et ceci même en l'absence du flag not-one_sequential dans la Title Play Map. Or, il semble (mais ce n'est pas encore tout à fait confirmé) qu'un Prev ou NextPGCN égal au numéro de PGC du domaine soit parfaitement légal dans un titre séquentiel. PgcEdit utilise ça pour la fonction "Enable All Operations", mais malheureusement, certains players refusent par conséquent d'utiliser la Time Map (notamment WinDVD.) C'est idiot, mais si ton player de salon a le même comportement, il te faudra remettre les links à 0 dans le PGC Editor.
                • Access Restricted bit
                  C'est un bit (au niveau des cells, donc actif uniquement pendant le playback de certains passages) utilisé extrêmement peu fréquemment qui permet au player de forcer de jouer la cell à vitesse 1 seulement, en interdisant quasiment toutes les manips via télécommande. A ma connaissance, ce bit n'est utilisé que dans les cells ajoutées par ARccOS et RipGuard. Tu peux vérifier leur présence dans la cell list du PGC Editor. Dans la colonne Type Flags, le deuxième chiffre est normalement 0. S'il vaut 32 ou 96, le bit Access Restricted est mis. Ne change pas ça si le DVD est protégé!

                Tout ça a l'air particulièrement compliqué, mais ne t'inquiètes pas: ce l'est réellement!
                Il est plus que probable que ton problème sera résolu en virant les PUOs et en reconstruisant les Time Maps. Je n'ai signalé le reste que par souci d'être complet.
                Last edited by r0lZ; 14 Jan 2007, 12:17 AM. Reason: typo
                r0lZ
                PgcEdit homepage (hosted by VideoHelp)
                Unofficial mirror (in Poland)

                Comment

                • r0lZ
                  Lord of Digital Video
                  Lord of Digital Video
                  • Mar 2004
                  • 1508

                  #9
                  Originally Posted by boursicot
                  apparemment, lorsqu'on veut sauter d'un menu dans un titre en fonction d'une condition (if), cette condition ne peut que comparer 2 gprm, et non pas un gprm à une valeur. Me confirmes-tu cela ?.
                  Pas tout à fait. C'est vrai de certaines commandes, mais pas toutes. Si vraiment la commande dont tu as besoin n'a pas la possibilité de comparer le GPRM à une constante, tu peux soit initialiser d'abord un autre GPRM à cette valeur puis comparer ces 2 GPRMs, soit utiliser la commande GoTo (qui permet la comparaison avec une constante) pour sauter à la ligne qui doit être exécutée si la comparaison est vraie.

                  Originally Posted by boursicot
                  Il ne me manque plus que deux choses pour que mon projet soit finalisé.
                  - la première, c'est l'accès à une position dans un titre (message précédent),
                  Réponse précédente.

                  Originally Posted by boursicot
                  - je vais tenter d'expliquer la deuxième : sur certains DVD dont le générique est en anglais, il apparait une image fixe avec le titre en français avant la lecture du film. Il semblerait (mais c'est toi le spécialiste) que seulement une image soit enregistrée dans le vob, et que ce soit l'ifo qui "dise" que cette image doit être lue pendant 5 secondes (par exemple). Comment faire pour rentrer cette instruction (et quelle instruction) dans l'ifo.
                  Il peut y avoir 2 raisons à cela:
                  - Soit l'image est construite comme dans un slide-show, et la durée du playback est dans le fichier VOB. Elle ne peut être modifiée dans ce cas.
                  - Soit c'est réellement une image fixe, et sa durée est dans l'IFO. Double-clique sur son PGC, et regarde dans la cell list la colonne marquée Cell Still Time. C'est la durée d'affichage de la cell, en secondes (de 0 à 254; 255 signifie indéfiniment, et n'est utilisé que dans les menus fixes, pour attendre que l'utilisateur sélectionne un bouton.) Note que même si tu mets 0 ici, la cell sera de toutes façons visible au moins une demi seconde (durée minimale de playback d'une cell) plus le temps qu'il faut au player pour trouver la cell suivante à jouer (variant entre 0 et 2 secondes, selon les players.)
                  Last edited by r0lZ; 13 Jan 2007, 09:33 PM.
                  r0lZ
                  PgcEdit homepage (hosted by VideoHelp)
                  Unofficial mirror (in Poland)

                  Comment

                  • boursicot
                    Gold Member
                    Gold Member
                    • Apr 2006
                    • 118

                    #10
                    GENIAL

                    Pour l'accès à une position, c'était bien dans la "Title Play Map table" que ça se passait.
                    Pour l'image fixe, c'était bien "Cell Still Time".

                    Maintenant, tout est OK. Mon projet est finalisé.
                    Avec tout ce que j'ai appris en quelques jours, je pense pouvoir faire pas mal de choses. Mais PgcEdit a certainement des possibilités que je ne soupçonne même pas.

                    Merci beaucoup.

                    Comment

                    • r0lZ
                      Lord of Digital Video
                      Lord of Digital Video
                      • Mar 2004
                      • 1508

                      #11
                      De rien. Merci pour le feedback.

                      J'ai oublié de préciser que le Cett Still Time est un temps de pause qui s'ajoute à la durée normale du playback de la cell. La pause à lieu à la fin du playback, et la dernière image est affichée pendant la pause. Evidemment, dans le cas d'une cell avec seulement une image fixe, ça ne change pas grand chose.

                      Attention aussi qu'en cas de pause non-nulle, la cell suivante dans la liste doit avoir son drapeau "seamless" OFF, ou la pause sera ignorée. Mais la plupart du temps, on utilise un cell still time uniquement sur la dernière cell du PGC, et on peut donc ignorer cette remarque.
                      Last edited by r0lZ; 14 Jan 2007, 12:29 AM.
                      r0lZ
                      PgcEdit homepage (hosted by VideoHelp)
                      Unofficial mirror (in Poland)

                      Comment

                      Working...