]> git.decadent.org.uk Git - videolink.git/blobdiff - generate_dvd.cpp
Updated copyright year.
[videolink.git] / generate_dvd.cpp
index bf1c2b2b80ae8a1ebddd30eadb70003a877bf1d4..e28659e1be467c225738b9044aa7c21b326eee8a 100644 (file)
@@ -242,46 +242,27 @@ void dvd_generator::generate_menu_vob(unsigned index,
        temp_file_name(temp_dir_, "menu-%3d.mpeg", 1 + index));
 
     std::ostringstream command_stream;
-    unsigned frame_count(menu_duration_frames(frame_params_));
     if (encoder_ == mpeg_encoder_ffmpeg)
     {
-       for (unsigned i = 0; i != frame_count; ++i)
-       {
-           std::string frame_name(background_name);
-           frame_name.push_back('-');
-           frame_name.push_back('0' + i / 10);
-           frame_name.push_back('0' + i % 10);
-           if (symlink(background_name.c_str(), frame_name.c_str()) != 0)
-               throw std::runtime_error(
-                   std::string("symlink: ").append(std::strerror(errno)));
-       }
        command_stream <<
            "ffmpeg -f image2 -vcodec png"
            " -r " << frame_params_.rate_numer <<
            "/" << frame_params_.rate_denom <<
-           " -i " << background_name << "-%02d"
+           " -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";
     }
     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" << frame_count << " -F"
-           << frame_params_.rate_numer << ":" << frame_params_.rate_denom
+           << " | 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";
     }