bool BlurayMetadata::ParseDisc(void) { if (!m_bdnav && !OpenDisc()) return false; m_metadata = bd_get_meta(m_bdnav); if (!m_metadata) return false; m_title = QString(m_metadata->di_name); m_alttitle = QString(m_metadata->di_alternative); m_language = QString(m_metadata->language_code); m_discnumber = m_metadata->di_set_number; m_disctotal = m_metadata->di_num_sets; for (unsigned i = 0; i < m_metadata->toc_count; i++) { uint num = m_metadata->toc_entries[i].title_number; QString title = QString(m_metadata->toc_entries[i].title_name); QPair<uint,QString> ret(num,title); m_titles.append(ret); } for (unsigned i = 0; i < m_metadata->thumb_count; i++) { QString filepath = QString("%1/BDMV/META/DL/%2") .arg(m_path) .arg(m_metadata->thumbnails[i].path); m_images.append(filepath); } return true; }
bool BlurayMetadata::ParseDisc(void) { if (!OpenDisc() && !m_bdnav) return false; const meta_dl *metadata = bd_get_meta(m_bdnav); if (metadata) { m_title = QString(metadata->di_name); m_alttitle = QString(metadata->di_alternative); m_language = QString(metadata->language_code); m_discnumber = metadata->di_set_number; m_disctotal = metadata->di_num_sets; for (unsigned i = 0; i < metadata->toc_count; i++) { uint num = metadata->toc_entries[i].title_number; QString title = QString(metadata->toc_entries[i].title_name); QPair<uint,QString> ret(num,title); m_titles.append(ret); } for (unsigned i = 0; i < metadata->thumb_count; i++) { QString filepath = QString("%1/BDMV/META/DL/%2") .arg(m_path) .arg(metadata->thumbnails[i].path); m_images.append(filepath); } } const BLURAY_DISC_INFO *discinfo = bd_get_disc_info(m_bdnav); if (discinfo) { m_topMenuSupported = discinfo->top_menu_supported; m_firstPlaySupported = discinfo->first_play_supported; m_numHDMVTitles = discinfo->num_hdmv_titles; m_numBDJTitles = discinfo->num_bdj_titles; m_numUnsupportedTitles = discinfo->num_unsupported_titles; m_aacsDetected = discinfo->aacs_detected; m_libaacsDetected = discinfo->libaacs_detected; m_aacsHandled = discinfo->aacs_handled; m_bdplusDetected = discinfo->bdplus_detected; m_libbdplusDetected = discinfo->libbdplus_detected; m_bdplusHandled = discinfo->bdplus_handled; } return true; }
bool InitDrive_(wchar* fn) { TermDrive(); //try all drivers disc = OpenDisc(fn); if (disc != NULL) { printf("gdrom: Opened image \"%s\"\n",fn); NullDriveDiscType = Busy; } else { printf("gdrom: Failed to open image \"%s\"\n",fn); NullDriveDiscType = NoDisk; //no disc :) } libCore_gdrom_disc_change(); return disc != NULL; }
bool process_image(FILE* w, bool& first, const string& image) { Disc* d = OpenDisc(image.c_str()); if (!d) { printf("Invalid image, %s\n", image.c_str()); return false; } auto l = image.find_last_of('\\'); if (l == image.npos) l = image.find_last_of('/'); if (l == image.npos) l = -1; string basename = image.substr(l + 1, image.find_last_of('.') - l-1); exec_cmd(w, first, d, basename); delete d; first = false; return true; }