DVDAUTHOR(1) راهنمای DVDAuthor DVDAUTHOR(1)

dvdauthor - گردهم‌آوری چندین جریان برنامه mpeg در یک فایل‌سیستم مناسب DVD

dvdauthor [ -o output-dir ] -x xml-control-file

dvdauthor [ -o output-dir ] [ -j | --jumppad | -g | --allgprm ] [ -T | --toc ] [ گزینه‌های منو یا عنوان ]

در سطحی کلی، یک DVD مجموعه‌ای از منوها و عنوان‌ها (titles) است. از نظر مفهومی، یک منو شامل دکمه‌هایی است که می‌توان به آن‌ها اقداماتی اختصاص داد و فهرستی از گزینه‌ها را به کاربر نهایی ارائه می‌دهد، در حالی که یک عنوان شامل محتوای اصلی DVD است. با این حال، در واقعیت بسیاری از ویژگی‌های موجود در منوها (شامل دکمه‌ها، مکث و تکرار حلقه) در عنوان‌ها نیز در دسترس هستند.

منوها و عنوان‌ها به مجموعه‌های عنوان (titlesets) و مجموعه منوی VMGM تقسیم می‌شوند. یک titleset می‌تواند شامل تعدادی منو و عنوان باشد که قرار است با یکدیگر کار کنند. دکمه‌های «menu»، «audio»، «subtitle» و «angle» روی کنترل از راه دور دستگاه پخش DVD همگی به منوهای موجود در همان titleset مربوط به عنوانی که در حال پخش است دسترسی خواهند داشت. تمامی عنوان‌ها و منوهای یک titleset معین دارای تنظیمات ویدیو، صدا و زیرنویس یکسانی هستند (تعاریف منوها مستقل از تعاریف عنوان‌ها است)، بنابراین اگر می‌خواهید تنظیمات متفاوتی داشته باشید (برای مثال نسبت تصویر عریض در برابر استاندارد)، به titlesetهای جداگانه نیاز دارید. Titlesetها برای پرش به یکدیگر طراحی نشده‌اند، بنابراین از دامنه منوی VMGM استفاده می‌شود. این دامنه مجموعه‌ای از منوها (بدون عنوان) است که می‌تواند به منوها و عنوان‌های تمام titlesetها دسترسی داشته باشد.

یکی از چالش‌برانگیزترین موارد هنگام تصمیم‌گیری در مورد نحوه ساخت DVD این است که اغلب راه‌های متعددی برای انجام یک کار یکسان وجود دارد. برای مثال، باید تصمیم بگیرید که منوها را در سطح VMGM قرار دهید یا سطح titleset. یک ساختار معمول این است که منوهای سطح بالا را در سطح VMGM قرار دهید، و منوهای پیکربندی سطح پایین (انتخاب صحنه / صدا / زیرنویس) را در titleset بگذارید. اگر بخش‌های اضافی (DVD extras) وجود دارد، شاید با یک تراک صوتی با کیفیت پایین‌تر و نسبت تصویر ۴:۳، در این صورت آن‌ها در یک titleset جداگانه همراه با یک منو برای انتخاب میان موارد اضافی در سطح titleset قرار می‌گیرند.

دستور dvdauthor به‌صورت عملیات گسسته کار می‌کند. این ابزار هر titleset را یکی یکی می‌سازد و سپس در نهایت VMGM را می‌سازد تا دیسک تکمیل شود. در آن نقطه می‌توان محتوا را روی یک DVD نوشت. اگر dvdauthor را با آرگومان‌های خط فرمان کنترل می‌کنید، هر مرحله به‌طور مستقل رخ خواهد داد؛ اما اگر از فایل کنترلی XML استفاده می‌کنید، این امکان را دارید که برخی یا همه مراحل را در یک مرحله ترکیب کنید.

فایل‌های VOB ارسال‌شده به dvdauthor باید بسته‌های DVD NAV (VOBU) را در مکان‌های مناسب هم‌تافته (multiplex) داشته باشند. بسیاری از ابزارها می‌توانند این کار را انجام دهند، از جمله mplex از mjpegtools نسخه ۱.۶.۰ یا بالاتر. سپس dvdauthor این بسته‌ها را با داده‌های صحیح پر می‌کند. دقت ویژه‌ای به‌کار رفته است تا اطمینان حاصل شود dvdauthor با fifo سازگار است؛ به این معنی که هر VOB منبع می‌تواند خروجی برنامه دیگری باشد (مانند mplex). این امر می‌تواند با جلوگیری از دسترسی‌های اضافی به فایل‌سیستم، اجرا را در بسیاری از سیستم‌ها سریع‌تر کند.

دایرکتوری مقصد برای ذخیره ساختار فایل DVD-Video. اگر گزینه -O مشخص شود، هر دایرکتوری موجود به‌صورت (ایمن) حذف می‌شود (فقط مواردی که شبیه بخشی از ساختار DVD-Video هستند حذف می‌شوند).
فایل کنترلی توصیف‌کننده ساختار خروجی جهت ایجاد را مشخص می‌کند.

توجه داشته باشید که باقی گزینه‌های خط فرمان منسوخ شده‌اند و بهتر است به جای آن‌ها از فایل کنترلی XML استفاده کنید.

ایجاد پدهای پرش (jumppads) را فعال می‌کند، که انعطاف‌پذیری بیشتری در انتخاب مقصدهای پرش/فراخوانی (jump/call) فراهم می‌سازد.
استفاده از تمام ۱۶ ثبات همه‌منظوره را فعال می‌کند. استفاده از jumppad و برخی عبارت‌های پیچیده که نیاز به ثبات‌های موقت دارند را غیرمجاز می‌کند.
به جای یک titleset، فایل جدول محتویات (TOC) را ایجاد می‌کند. اگر از این گزینه استفاده شود، باید ابتدا ذکر گردد و نباید هیچ عنوانی را مشخص کنید.
یک منو ایجاد می‌کند.
یک عنوان ایجاد می‌کند.
فهرستی از گزینه‌های ویدیو که با علامت مثبت (+) جدا شده‌اند. ابزار dvdauthor سعی می‌کند گزینه‌های مشخص‌نشده را استنتاج کند. گزینه‌ها شامل: pal، ntsc، 4:3، 16:9، 720xfull، 720x576، 720x480، 704xfull، 704x576، 704x480، 352xfull، 352x576، 352x480، 352xhalf، 352x288، 352x240، nopanscan، noletterbox، crop. پیش‌فرض 4:3, 720xfull است.
فهرستی از گزینه‌ها برای یک تراک صوتی که با علامت مثبت (+) جدا شده‌اند، و هر تراک با کاما (,) از دیگری تفکیک می‌شود. برای مثال -a ac3+en,mp2+de دو تراک صوتی را مشخص می‌کند: اولی یک تراک انگلیسی کدگذاری‌شده با AC3 است، و دومی یک تراک آلمانی کدگذاری‌شده با فشرده‌سازی MPEG-1 layer 2 است. گزینه‌ها شامل ac3، mp2، pcm، dts، 16bps، 20bps، 24bps، drc، surround، nolang، 1ch، 2ch، 3ch، 4ch، 5ch، 6ch، 7ch، 8ch، و هر کد اختصاری زبان دو حرفی ISO 639 است. پیش‌فرض عبارت است از ۱ تراک، mp2، 20bps، nolang، 2ch. گزینه 'ac3' متضمن drc و 6ch است.
فهرستی از گزینه‌ها برای یک تراک زیرتصویر (subpicture)، که با علامت مثبت (+) جدا شده‌اند و هر تراک با کاما (,) جدا می‌شود. شامل nolang و هر اختصار دو حرفی زبان (به گزینه -a مراجعه کنید). پیش‌فرض بدون تراک زیرتصویر است.
منوی جاری را به منوی پیش‌فرض برای شرایط خاص تبدیل می‌کند. این گزینه فهرستی جداشده با کاما از موارد زیر است:

برای منوهای TOC: مورد title

برای منوهای VTS: موارد root، ptt، audio، subtitle، angle

محل دریافت پالت زیرتصویر را مشخص می‌کند. قابل تنظیم به ازای هر عنوان و هر منو. اگر نام فایل به .rgb ختم شود (بدون حساسیت به حروف بزرگ و کوچک) فرض می‌شود RGB است، در غیر این صورت YUV در نظر گرفته می‌شود. ورودی‌ها باید ۶ رقم هگزادسیمال باشند. مقدار پیش‌فرض FILE برابر با xste-palette.dat است.
فهرستی جداشده با کاما (,) از نشانگرهای فصل را مشخص می‌کند. هر نشانگر به شکل [[h:]mm:]ss[.frac] است و نسبت به SCR فایل بعدی فهرست‌شده سنجیده می‌شود (مستقل از هرگونه جابه‌جایی برچسب زمانی که درون dvdauthor رخ می‌دهد). نشانگرهای فصل فقط روی فایل بعدی اعمال می‌شوند. پیش‌فرض 0 است.
یک فایل، لوله (pipe) یا دستور پوسته منتهی به | را مشخص می‌کند که جریان سیستم MPEG-2 با بخش‌های VOB درج‌شده در مکان‌های مناسب را تأمین می‌کند (ایجادشده با استفاده از mplex -f 8).
دکمه‌ای با اندازه مشخص‌شده ایجاد می‌کند. برای شرح commandlist به بخش «توضیحات زبان» مراجعه کنید.
دستورالعمل‌های commandlist را قبل از شروع یا در انتهای منو/عنوان اجرا می‌کند. برای ساختار commandlist به بخش «توضیحات زبان» مراجعه کنید.

ساختار پایه فایل کنترلی به این صورت است:

<dvdauthor [dest="output-dir"] [jumppad="1|on|yes" | allgprm="1|on|yes"] [format="ntsc|pal"] [provider="provider"]>
   <vmgm>
      [<fpc>commands;</fpc>]
      <menus [lang="language-code"]>
         <video [format="ntsc|pal"] [aspect="4:3|16:9"]
                [resolution="XxY"] [caption="field1|field2"]
                [widescreen="nopanscan|noletterbox|crop"] />
         <audio [format="mp2|ac3|dts|pcm"] [channels="numchannels"]
                [quant="16bps|20bps|24bps|drc"] [dolby="surround"]
                [samplerate="48khz|96khz"] [lang="language"]
                [content="normal|impaired|comments1|comments2"] />
         [<audio ... />]
         <subpicture [lang="language-code"]>
            <stream mode="normal|widescreen|letterbox|panscan"
                [content="normal|large|children|normal_cc|large_cc|children_cc|forced|director|large_director|children_director"]
                id="streamid" />
            [<stream ... />]
         </subpicture>
         [<subpicture ... />]
         <pgc [entry="title"] [palette="yuvfile|rgbfile"]
              [pause="seconds|inf"]>
            <subpicture>
               [<stream ... />]
            </subpicture>
            <pre> commands; </pre>
            <vob file="file.mpg" [chapters="chapter-list"]
                 [pause="seconds|inf"]>
                 <cell [start="timestamp"] [end="timestamp"]
                    [chapter="1|on|yes" | program="1|on|yes"] [pause="seconds|inf"]>
                    commands;
                 </cell>
            </vob>
            [<vob ... />]
            <button [name="buttonname"]> commands; </button>
            [<button ... />]
            <post> commands; </post>
         </pgc>
         [<pgc ... />]
      </menus>
      [<menus ... />]
   </vmgm>
   <titleset>
      <menus [lang="language-code"]>
         [<video ... />]
         [<audio ... />]
         <pgc [entry="entries"]
              [palette="yuvfile|rgbfile"] [pause="seconds|inf"]>
            [...]
         </pgc>
         [<pgc ... />]
      </menus>
      [<menus ... />]
      <titles>
         [<video ... />]
         [<audio ... />]
         <pgc [entry="notitle"] [palette="yuvfile|rgbfile"] [pause="seconds|inf"]>
            [...]
         </pgc>
         [<pgc ... />]
      </titles>
   </titleset>
   [<titleset ... />]
</dvdauthor>

تفکیک بخش‌های فایل کنترلی:

<dvdauthor [dest="output-dir"] [jumppad="1|on|yes" | allgprm="1|on|yes"] [format="ntsc|pal"] [provider="provider"]>
برنامه dvdauthor را آغاز می‌کند. مشخصه dest دایرکتوری محل نوشتن فایل‌ها توسط dvdauthor را تعیین می‌کند. این مشخصه با گزینه -o بازنویسی می‌شود. شامل حداکثر یک تگ <vmgm> و هر تعداد تگ <titleset> است.
<vmgm>
<titleset>
ساختارهای یک مجموعه منوی سطح VMGM یا یک مجموعه عنوان (titleset). شامل صفر یا چند تگ <menus> و در صورت titleset بودن، حداکثر یک تگ <titles> است.
<menus [lang="language-code"]>
فهرستی از منوها با یک زبان مشترک را برای این مجموعه منوی VMGM یا titleset مشخص می‌کند، که در اصطلاح dvdauthor یک «pgcgroup» نامیده می‌شود. شامل حداکثر یک تگ <video>، حداکثر یک تگ <audio>، حداکثر یک تگ <subpicture>، و هر تعداد تگ <pgc> است.
<titles>
فهرست عنوان‌ها را برای این titleset مشخص می‌کند، که در اصطلاح dvdauthor یک «pgcgroup» نامیده می‌شود. شامل حداکثر یک تگ <video>، حداکثر هشت تگ <audio>، حداکثر ۳۲ تگ <subpicture>، و هر تعداد تگ <pgc> است.
<video [format="ntsc|pal"] [aspect="4:3|16:9"] [resolution="XxY"] [caption="field1|field2"] [widescreen="nopanscan|noletterbox|crop"] />
پارامترهای ویدیویی را برای این pgcgroup به‌صورت دستی پیکربندی می‌کند. اگر هر یک از این موارد تنظیم نشود، از جریان منبع استنتاج خواهد شد. توجه داشته باشید که فرمت DVD تنها به‌طور خاص از وضوح‌های 720x480، 704x480، 352x480 و 352x240 برای NTSC و وضوح‌های 720x576، 704x576، 352x576 و 352x288 برای PAL پشتیبانی می‌کند، اما dvdauthor محدوده وسیع‌تری از ورودی‌ها را می‌پذیرد و به نزدیک‌ترین اندازه گرد می‌کند.
<audio [format="mp2|ac3|dts|pcm"] [channels="numchannels"] [dolby="surround"] [quant="16bps|20bps|24bps|drc"] [samplerate="48khz|96khz"] [lang="language"] [content="normal|impaired|comments1|comments2"] />
یک جریان صوتی را برای این pgcgroup به‌صورت دستی پیکربندی می‌کند. برای هر جریان یک بار ذکر کنید. اکثر پارامترها به‌طور خودکار از VOBهای منبع استنتاج می‌شوند، به جز پارامترهای PCM. با این حال، زبان و محتوا باید به‌طور دستی مشخص شوند. توجه داشته باشید که امکان دارد فقط مشخصه‌های lang و content را ذکر کرده و بگذارید dvdauthor بقیه موارد را پر کند.
<subpicture [lang="language"] [content="normal|large|children|normal_cc|large_cc|children_cc|forced|director|large_director|children_director"] />
یک زیرتصویر/زیرنویس را برای این pgcgroup یا PGC به‌صورت دستی پیکربندی می‌کند. در سطح pgcgroup، برای هر زبان یک بار ذکر کنید. مواردی که در سطح PGC می‌آیند مشخصه lang یا content ندارند؛ آن‌ها این موارد را از تگ <subpicture> متناظر در سطح pgcgroup به ارث می‌برند.
<stream mode="normal|widescreen|letterbox|panscan" id="streamid" />
شناسه (ID) جریانی را مشخص می‌کند که بازنمایی این زیرتصویر در یک حالت نمایش خاص است. این مورد را می‌توان به ازای هر PGC یا در سطح کل pgcgroup مشخص کرد.
<pgc [entry="entries"] [palette="yuvfile|rgbfile"] [pause="seconds|inf"]>
یک PGC صرفاً اصطلاحی تخصصی برای یک منو یا یک عنوان است. این مفهوم معنای خاصی در استاندارد DVD دارد، از این رو کاربرد آن در اینجا حفظ شده است. PGCها می‌توانند دستوراتی داشته باشند که قبل از شروع پخش یا پس از پایان آن اجرا شوند؛ تگ‌های <pre> و <post> را در ادامه مشاهده کنید.

اگر PGC یک منو باشد، می‌توانید یک یا چند ورودی (entry) برای آن مشخص کنید. این بدان معناست که اگر دکمه متناظر را روی کنترل از راه دور DVD فشار دهید، به این منو هدایت می‌شود. برای منوی سطح VMGM، تنها گزینه title است، که در کنترل‌ها متناظر با دکمه منوی اصلی (top menu) است. برای منوی سطح titleset، می‌توانید از root، subtitle، audio، angle و ptt استفاده کنید. اگر بیش از یک مورد می‌خواهید، آن‌ها را با فاصله یا کاما جدا کنید. توجه داشته باشید که ورودی root برای دستوراتی در نظر گرفته شده که از یک منوی سطح VMGM به یک منوی titleset پرش می‌کنند.

اگر PGC درون یک titleset باشد، فرض می‌شود یک عنوان است مگر اینکه entry="notitle" مشخص شده باشد.

تمام ماسک‌های دکمه و منو و تمام زیرنویس‌ها در یک PGC باید از یک پالت رنگی یکسان ۱۶ رنگی استفاده کنند. اگر از spumux برای تولید بسته‌های زیرنویس/زیرتصویر استفاده کنید، اطلاعات رنگ به‌طور خودکار به dvdauthor منتقل می‌شود؛ با این حال، اگر از ابزار زیرنویس‌ساز دیگری استفاده می‌کنید یا می‌خواهید کنترل بیشتری روی پالت داشته باشید، می‌توانید آن را به‌صورت دستی با مشخصه palette تعیین کنید. ۱۶ ورودی نخست فایل باید ۱۶ رنگ پالت باشند که به‌صورت اعداد هگزادسیمال ۶ رقمی نمایش‌دهنده تفکیک RGB (اگر نام فایل به .rgb ختم شود) یا تفکیک YUV (اگر نام فایل به .rgb ختم نشود) هستند. پس از آن، اطلاعات گروه دکمه را می‌توان به‌صورت جفت‌های اعداد هگزادسیمال ۸ رقمی فهرست کرد؛ حداکثر تا سه گروه دکمه قابل تعیین است.

اگر یک سکانس ویدیویی کوتاه دارید یا می‌خواهید ویدیو در انتها مکث کند، می‌توانید از مشخصه pause برای تنظیم تعداد ثانیه‌ها (به‌صورت عدد صحیح) از ۱ تا ۲۵۴ استفاده کنید. اگر می‌خواهید ویدیو به‌طور نامحدود مکث کند، از inf استفاده کنید.

<pre> commands; </pre>
<post> commands; </post>
دستوراتی را برای اجرا قبل یا بعد از پخش یک PGC تعیین می‌کند. می‌توان از آن برای تکرار ویدیوی جاری (با داشتن توالی <post> jump ... </post>)، یا برای رد کردن شرطی برخی فصل‌ها در صورت تنظیم بودن یک پرچم استفاده کرد.
<fpc> commands; </fpc>
دستوراتی را تعیین می‌کند که هنگام قرار دادن دیسک برای اولین بار در دستگاه پخش اجرا می‌شوند (FPC = First Program Chain یا نخستین زنجیره برنامه). می‌توان از آن برای پرش به یک منوی خاص یا مقداردهی اولیه ثبات‌ها هنگام راه‌اندازی استفاده کرد. اگر مشخص نشود، یک زنجیره ضمنی ایجاد خواهد شد که به اولین منوی یافت‌شده پرش می‌کند، یا اگر منویی وجود نداشته باشد به اولین عنوان می‌پرد.
<vob file="file.mpg" [chapters="chapter-list"] [pause="seconds|inf"] />
یک فایل ویدیویی ورودی را برای یک منو یا عنوان، با نقاط فصل اختیاری و مکث در انتها مشخص می‌کند.
<cell [start="timestamp"] [end="timestamp"] [chapter="1|on|yes" | program="1|on|yes"] [pause="seconds|inf"]> commands; </cell>
روشی دقیق‌تر برای تعیین نقاط نشانگر در یک عنوان. در صورت وجود، تگ <vob> دربرگیرنده نباید مشخصه chapters داشته باشد. یک سلول می‌تواند یک دستور ماشین مجازی (VM) متصل به خود داشته باشد تا هنگام پخش آن اجرا شود. اگر مشخصه program تنظیم شده باشد، این سلول نقطه‌ای خواهد بود که کاربر می‌تواند با استفاده از دکمه‌های prev/next روی کنترل از راه دور دستگاه DVD به آن بپرد. اگر مشخصه chapter تنظیم شده باشد (متضمن تنظیم بودن program نیز هست)، این سلول یک نقطه فصل نیز محسوب می‌شود.
<button [name="buttonname"]> commands; </button>
دستوراتی را مشخص می‌کند که هنگام انتخاب دکمه با نام مشخص‌شده توسط کاربر اجرا می‌شوند. نام‌ها و موقعیت‌های دکمه را با spumux تعریف می‌کنید.

زبان بسیار ساده است و تقریباً شبیه به C است.

•
دستورها با یک نقطه ویرگول (semicolon) خاتمه می‌یابند.
•
دستورها می‌توانند در چندین خط امتداد یابند.
•
چندین دستور می‌توانند در یک خط ظاهر شوند.
•
فاصله‌های خالی (فاصله، تب، خط جدید) اهمیت ندارند، مگر برای جداسازی کلمات کلیدی و شناسه‌ها.
•
توضیحات به سبک زبان C به شکل /* ... */ مجاز هستند. یا می‌توانید از توضیحات XML به شکل <!-- مانند این --> استفاده کنید.

ماشین مجازی DVD مقادیر ۱۶ بیتی را پردازش می‌کند. این ماشین حداکثر از ۱۶ ثبات همه‌منظوره پشتیبانی می‌کند؛ با این حال dvdauthor تعداد ۳ ثبات را برای استفاده داخلی رزرو می‌کند. بنابراین ثبات‌های ۰ تا ۱۲ برای استفاده در دسترس هستند و از آن‌ها با عنوان g0 تا g12 یاد می‌شود.

همچنین ۲۴ ثبات سیستمی وجود دارد که می‌توان به آن‌ها با عنوان s0 تا s23 اشاره کرد. همه این ثبات‌ها قابل تنظیم نیستند. بسیاری از آن‌ها مترادف‌های یادافزا (mnemonic) دارند.

جریان صوتی را مشخص می‌کند، در محدوده 0-7.
تراک زیرنویس، در محدوده 0-31. اگر می‌خواهید زیرنویس همیشه نمایش داده شود، باید مقدار ۶۴ را به آن اضافه کنید (یعنی 64-95 را انتخاب کنید). صرفاً انتخاب تراک (0-31) به این معنی است که فقط زیرنویس‌های اجباری (forced) نمایش داده می‌شوند، در حالی که فعال‌سازی تراک (64-95) به این معنی است که تمام زیرنویس‌ها نمایش داده خواهند شد. این ویژگی به شما اجازه می‌دهد زیرنویس‌های اجباری را تنها برای بخش‌هایی از فیلم که بازیگران به زبان خارجی (برای بیننده) صحبت می‌کنند فعال کنید، اما همچنان زیرنویس‌های عادی را برای افراد کم‌شنوا داشته باشید. بینندگان کم‌شنوا تراک را فعال می‌کنند (64-95) در حالی که سایر بینندگان فقط تراک را انتخاب می‌کنند (0-31) و به این ترتیب می‌توانند از یک تراک مشترک استفاده کنند.
زاویه دید (angle) را انتخاب می‌کند (در حال حاضر آزمایش‌نشده).
دکمه‌ای که در حال حاضر هایلایت شده است را مشخص می‌کند. توجه داشته باشید که مقدار در ۱۰۲۴ ضرب می‌شود، بنابراین دکمه اول ۱۰۲۴، دکمه دوم ۲۰۴۸ و به همین ترتیب است.

عبارت‌ها از نحو معمول C پیروی می‌کنند، به جز اینکه مقادیر بولی به اعداد صحیح و برعکس قابل تبدیل نیستند. عملگرها و مقایسه‌ها عبارتند از:

==, !=, >=, >, <=, <, &&, ||, !, eq, ne, ge, gt, le, lt, and, or, xor, not, +, -, *, /, %, &, |, ^

از آنجا که کد درون XML محصور شده است، تجزیه‌کننده هر کاراکتر < اسکیپ‌نشده را (یعنی اگر به صورت "&lt;" نوشته نشود) به عنوان خطا می‌گیرد، بنابراین کلمات اختصاری الفبایی برای تمام عملگرهای مقایسه جهت یکدستی ارائه شده‌اند. همچنین می‌توانید کد را درون یک بخش <![CDATA[ ... ]]> قرار دهید.

همچنین یک تابع عددی وجود دارد:

یک عدد شبه‌تصادفی، بین ۱ و عدد ارائه‌شده، به‌صورت شامل دو سر بازه محاسبه می‌کند.

بلاک‌ها یا یک دستور تکی (منتهی به نقطه ویرگول) هستند، یا گروهی از دستورها که درون آکولاد محصور شده‌اند. برای مثال:

•
g3 = s7;
•
{
  audio = 1;
  subtitle = 65;
  jump vmgm menu 3;
}

دستورهای پشتیبانی‌شده در حال حاضر نسبتاً ساده هستند.

یک متغیر را برابر با نتیجه یک معادله قرار می‌دهد.
عبارت را محاسبه می‌کند؛ اگر درست باشد، بلاک کد را اجرا می‌کند.
به یک عنوان یا منوی خاص پرش می‌کند، یا منوی خاصی را فراخوانی می‌کند، یا به عنوان فراخواننده بازمی‌گردد. شما فقط می‌توانید یک call را از یک عنوان به یک منو اجرا کنید؛ تمام اشکال دیگر غیرمجاز هستند. هدف از استفاده از call به جای jump (علاوه بر این واقعیت که آن‌ها از فهرستی از مقصدهای مانعةالجمع پشتیبانی می‌کنند) این است که به منو اجازه دهد با استفاده از resume به نقطه‌ای از عنوان که فراخوانی از آنجا آغاز شده بود بازگردد. می‌توانید سلول بازگشت را با استفاده از کلمه کلیدی resume به‌صورت دستی مشخص کنید، اما اگر مقداری مشخص نکنید و از این دستور در یک بلاک دستورالعمل post استفاده کنید، سلول ۱ فرض خواهد شد.

موارد زیر مقصدهای ممکن هستند (توجه داشته باشید که منوها فصل ندارند):

[vmgm | titleset X] menu
[vmgm | titleset X] menu Y
[vmgm | titleset X] menu entry Z
منوی پیش‌فرض، منوی شماره Y، یا منویی که به عنوان ورودی Z مشخص شده است را به عنوان مقصد تعیین می‌کند. منو در دامنه VMGM یا titleset قرار دارد. اگر می‌خواهید منویی را در دامنه جاری مقصد قرار دهید، می‌توانید از ذکر نام دامنه صرف‌نظر کنید.
[titleset X] title Y [chapter Z]
یک عنوان یا فصلی در یک عنوان را به عنوان مقصد تعیین می‌کند. شماره‌گذاری از ۱ شروع می‌شود. تمام عنوان‌های روی دیسک در دامنه VMGM قابل دسترسی هستند، یا می‌توانید در عوض بر حسب titleset به آن‌ها دسترسی پیدا کنید.
یک PGC را در VMGM یا titleset جاری مقصد قرار می‌دهد.
فصلی در عنوان جاری را مقصد قرار می‌دهد.
یک برنامه یا سلول را در PGC جاری مقصد قرار می‌دهد. می‌توانید از این مورد برای ایجاد منوهای تکرارشونده در حلقه استفاده کنید: jump cell 1;
(فقط در Jump) انتقال‌های نسبی کنترل را درون منو/عنوان جاری انجام می‌دهد. عبارت "cell/program/pgc top" به ابتدای سلول/برنامه/PGC جاری بازمی‌گردد؛ عبارت "next/prev cell/program/pgc" به سلول/برنامه/PGC بعدی یا قبلی می‌رود؛ عبارت "up pgc" به PGC بالادست («up») می‌رود (در حال حاضر در dvdauthor قابل تنظیم نیست)؛ و "pgc tail" به توالی <post> در PGC جاری می‌رود.

فصل‌ها از ۱ در هر عنوان شماره‌گذاری می‌شوند، در حالی که برنامه‌ها از ۱ در هر PGC شماره‌گذاری می‌شوند. بنابراین، وقتی بیش از یک PGC در یک عنوان وجود دارد، شماره‌گذاری برنامه‌ها می‌تواند مستقل از فصل‌ها بازنشانی شود.

محدودیت‌های زیر توسط استاندارد DVD-Video اعمال می‌شوند.

بیش از ۹۹ titleset، بیش از ۹۹ منو در VMG یا یک titleset، و بیش از ۹۹ عنوان در یک titleset نمی‌تواند وجود داشته باشد.

هر عنوان می‌تواند از حداکثر ۹۹۹ PGC تشکیل شود. هر PGC می‌تواند شامل حداکثر ۲۵۵ برنامه باشد. بخش‌های <pre> و <post> یک PGC در مجموع نمی‌توانند بیش از ۱۲۸ دستور ماشین مجازی (VM) داشته باشند.

از آنجا که تنها یک فایل VOB به نام (VIDEO_TS.VOB) در VMG وجود دارد، کل مقدار ویدیو در منوهای VMG باید در ۱۰۷۳۷۰۹۰۵۶ بایت (۵۲۴۲۷۲ بخش ۲ کیبی‌بایتی) جا شود. در هر titleset، تمام ویدیوی منو باید در اولین VOB به نام (VTS_nn_0.VOB) جا شود، بنابراین به همان مقدار محدود است.

Marc Leeman <marc.leeman@gmail.com> MarcLeeman2003Marc Leeman

19 August 2026