X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=generate_dvd.cpp;h=eb8fc0498fe0895cde21234810bfa5cc671773b6;hb=2bc553f13070e61f28fb28ec333d9abd710d2b51;hp=7f496c23e2b2a71d97411f80f6f27308b475ed1b;hpb=b463276d863f86a4268b5cac63fc6879ad6517bc;p=videolink.git diff --git a/generate_dvd.cpp b/generate_dvd.cpp index 7f496c2..eb8fc04 100644 --- a/generate_dvd.cpp +++ b/generate_dvd.cpp @@ -98,6 +98,13 @@ namespace oss << "exceeded DVD limit: " << limit_type << " > " << limit; throw std::length_error(oss.str()); } + + // dvdauthor uses some menu numbers to represent entry points - + // distinct from the actual numbers of the menus assigned as those + // entry points - resulting in a practical limit of 119 per + // domain. This seems to be an oddity of the parser that could be + // fixed, but for now we'll have to work with it. + const unsigned dvdauthor_anonymous_menus_max = dvd::domain_pgcs_max - 8; } dvd_generator::dvd_generator(const video::frame_params & frame_params, @@ -111,8 +118,8 @@ dvd_generator::pgc_ref dvd_generator::add_menu() { pgc_ref next_menu(menu_pgc, menus_.size()); - if (next_menu.index == dvd::domain_pgcs_max) - throw_length_error("number of menus", dvd::domain_pgcs_max); + if (next_menu.index == dvdauthor_anonymous_menus_max) + throw_length_error("number of menus", dvdauthor_anonymous_menus_max); menus_.resize(next_menu.index + 1); return next_menu;