]> git.decadent.org.uk Git - videolink.git/blobdiff - generate_dvd.cpp
Release versions 1.2.11 and 1.2.11-1
[videolink.git] / generate_dvd.cpp
index 6125738077a2d31d4a56ce21d1d65a0d75c33b85..371894d41edc23abd7ac34abee8337fd52b64711 100644 (file)
@@ -1,6 +1,7 @@
 // Copyright 2005-8 Ben Hutchings <ben@decadent.org.uk>.
 // See the file "COPYING" for licence details.
 
+#include <cassert>
 #include <cerrno>
 #include <cstring>
 #include <fstream>
@@ -248,30 +249,21 @@ void dvd_generator::generate_menu_vob(unsigned index,
            "ffmpeg -f image2 -vcodec png"
            " -r " << frame_params_.rate_numer <<
            "/" << frame_params_.rate_denom <<
-           " -i " << background_name <<
-           " -loop_input -t " << menu_duration_seconds(frame_params_) <<
+           " -loop_input -i " << background_name <<
+           " -t " << menu_duration_seconds(frame_params_) <<
            " -target " << frame_params_.common_name <<  "-dvd"
-           " -vcodec mpeg2video -aspect 4:3 -an -y /dev/stdout";
+           " -aspect 4:3 -an -y /dev/stdout";
     }
     else
     {
-       assert(encoder_ == mpeg_encoder_mjpegtools_old
-              || encoder_ == mpeg_encoder_mjpegtools_new);
+       assert(encoder_ == mpeg_encoder_mjpegtools);
        command_stream
            << "pngtopnm " << background_name
            << " | ppmtoy4m -v0 -n" << menu_duration_frames(frame_params_)
            << " -F" << frame_params_.rate_numer << ":" << frame_params_.rate_denom
            << " -A" << frame_params_.pixel_ratio_width
            << ":" << frame_params_.pixel_ratio_height
-           << " -Ip ";
-       // The chroma subsampling keywords changed between
-       // versions 1.6.2 and 1.8 of mjpegtools.  There is no
-       // keyword that works with both.
-       if (encoder_ == mpeg_encoder_mjpegtools_old)
-           command_stream << "-S420_mpeg2";
-       else
-           command_stream << "-S420mpeg2";
-       command_stream <<
+           << " -Ip -S420mpeg2"
            " | mpeg2enc -v0 -f8 -a2 -o/dev/stdout"
            " | mplex -v0 -f8 -o/dev/stdout /dev/stdin";
     }
@@ -368,8 +360,9 @@ void dvd_generator::generate(const std::string & output_dir) const
        const bool have_real_menus =
            titleset_num * dvdauthor_anonymous_menus_max < menus_.size();
 
-       file << "  <" << outer_element_name << ">\n"
-            << "    <menus>\n";
+       file << "  <" << outer_element_name << ">\n" <<
+            "    <menus>\n"
+            "      <video format='" << frame_params_.common_name << "'/>\n";
 
        const unsigned menu_begin = titleset_num * dvdauthor_anonymous_menus_max;
        const unsigned menu_end =
@@ -614,6 +607,7 @@ void dvd_generator::generate(const std::string & output_dir) const
        {
            file <<
                "    <titles>\n"
+               "      <video format='" << frame_params_.common_name << "'/>\n"
                "      <pgc>\n";
 
            file << "        <pre>\n";