{
struct frame_params
{
- const char * name;
+ const char * ffmpeg_name;
unsigned int width, height;
unsigned int rate_numer, rate_denom;
unsigned int pixel_ratio_width, pixel_ratio_height;
};
- extern const frame_params pal_params, ntsc_params;
+ extern const frame_params frame_params_625, frame_params_525;
}
#endif // !INC_VIDEO_HPP
<< "ffmpeg"
<< " -f image2 -vcodec png -i "
<< background_temp_->get_name()
- << " -target " << frame_params_.name << "-dvd"
+ << " -target " << frame_params_.ffmpeg_name << "-dvd"
<< " -vcodec mpeg2video -an -y /dev/stdout"
<< " | spumux -v0 -mdvd " << state->spumux_temp.get_name()
<< " > " << contents_.menus[menu_num].vob_temp->get_name();
const video::frame_params & lookup_frame_params(const char * str)
{
assert(str);
- static const struct { const char * str; bool is_ntsc; }
- known_strings[] = {
- { "NTSC", true },
- { "ntsc", true },
- { "PAL", false },
- { "pal", false },
- // For DVD purposes, SECAM can be treated identically to PAL.
- { "SECAM", false },
- { "secam", false }
+ static const char * const known_strings[] = {
+ "525", "625",
+ "525/60", "625/50",
+ "NTSC", "PAL",
+ "ntsc", "pal"
};
for (std::size_t i = 0;
i != sizeof(known_strings)/sizeof(known_strings[0]);
++i)
- if (std::strcmp(str, known_strings[i].str) == 0)
- return known_strings[i].is_ntsc ?
- video::ntsc_params : video::pal_params;
+ if (std::strcmp(str, known_strings[i]) == 0)
+ return (i & 1)
+ ? video::frame_params_625
+ : video::frame_params_525;
throw std::runtime_error(
std::string("Invalid video standard: ").append(str));
}
{
stream <<
"Usage: " << command_name << " [gtk-options] [--preview]\n"
- " [--video-std {ntsc|pal|secam}]\n"
+ " [--video-std {525|525/60|NTSC|ntsc"
+ " | 625|625/50|PAL|pal}]\n"
" [--encoder {mjpegtools|mjpegtools-old}]\n"
" menu-url [output-dir]\n";
}
{
try
{
- video::frame_params frame_params = video::pal_params;
+ video::frame_params frame_params = video::frame_params_625;
bool preview_mode = false;
std::string menu_url;
std::string output_dir;