AVS to BluRay SUP/PGS and BDN XML

This program can be used to transform AviSynth scripts, which produce RGBA output, to BDN XML+PNG format. This in turn can be transformed into a SUP file, which can be used to master a BluRay disc with subtitles. (Doom9 thread, Doom10 thread)

Usage instructions (possibly outdated, check one of the threads above):

  1. If you want to build it:

    make

    Or, if you want to build for distribution:

    make dist

  2. Prepare subtitles. You can either produce subtitles in a normal format like SRT or ASS/SSA, or produce an RGBA video beforehand.

  3. Create an AviSynth script. If you made a regular subtitle file, you can use something like this:

    video=AviSource("video.avi")
    # This requires at least VSFilter 2.39
    MaskSub("subtitles.ext",video.width,video.height,video.framerate,video.framecount)

    If you created an RGBA video, do something like this instead:

    AviSource("subtitles_RGBA.avi")
    FlipVertical()

  4. Run the program:

    avs2bdnxml -t Undefined -l und -v 1080p -f 23.976 -b1 -o output.xml input.avs

  5. For some programs, you have to convert the PNG files to 8bit RGBA palette. avs2bdnxml can do this for you, using the -p switch. This isn't necessary for BDSupEdit.

  6. You get BDN XML in the following format:

    <?xml version="1.0" encoding="UTF-8"?>
    <BDN Version="0.93" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="BD-03-006-0093b BDN File Format.xsd">
    <Description>
    <Name Title="Undefined" Content=""/>
    <Language Code="und"/>
    <Format VideoFormat="[ 480i / 480p / 576i / 720p / 1080i /1080p ]" FrameRate="[ 23.976 / 24 / 25 / 29.97 / 50 / 59.94 ]" DropFrame="false"/>
    <Events LastEventOutTC="00:00:00:00" FirstEventInTC="00:00:00:00" ContentInTC="00:00:00:00"
    ContentOutTC="00:00:00:00" NumberofEvents="[ number of encoded frames ]" Type="Graphic"/>
    </Description>
    <Events>
    <Event Forced="[ False / True ]" InTC="00:00:00:00" OutTC="00:00:00:00">
    <Graphic Width="0" Height="0" X="0" Y="0">000000.png</Graphic>
    </Event>
    </Events>
    </BDN>

  7. Use a program like BDSupEdit or BDSup2Sub to convert the BDN XML stuff to a BD-SUP file. The rest is left as an exercise for the reader.