void ebml_chapters_converter_c::fix_edition_entry(KaxEditionEntry &eentry) const { bool atom_found = false; KaxEditionUID *euid = nullptr; for (auto element : eentry) if (dynamic_cast<KaxEditionUID *>(element)) { euid = static_cast<KaxEditionUID *>(element); if (!is_unique_number(uint64(*euid), UNIQUE_EDITION_IDS)) { mxwarn(boost::format(Y("Chapter parser: The EditionUID %1% is not unique and could not be reused. A new one will be created.\n")) % uint64(*euid)); *static_cast<EbmlUInteger *>(euid) = create_unique_number(UNIQUE_EDITION_IDS); } } else if (dynamic_cast<KaxChapterAtom *>(element)) { atom_found = true; fix_atom(static_cast<KaxChapterAtom &>(*element)); } if (!atom_found) throw conversion_x{Y("At least one <ChapterAtom> element is needed.")}; if (!euid) { euid = new KaxEditionUID; *static_cast<EbmlUInteger *>(euid) = create_unique_number(UNIQUE_EDITION_IDS); eentry.PushElement(*euid); } }
bool generic_packetizer_c::set_uid(uint64_t uid) { if (!is_unique_number(uid, UNIQUE_TRACK_IDS)) return false; add_unique_number(uid, UNIQUE_TRACK_IDS); m_huid = uid; if (m_track_entry) GetChild<KaxTrackUID>(m_track_entry).SetValue(m_huid); return true; }