https://bugs.kde.org/show_bug.cgi?id=367639
--- Comment #47 from Thomas Schmitt <scdbac...@gmx.net> --- Hi, > http://commits.kde.org/k3b/cbe652000292dc5a6c9e36de0d1000ca0d84f75d > libk3b/projects/datacd/k3bdatamultisessionparameterjob.cpp Actually one should still throw error if (nextSessionStart == 0) at the end of setupMultiSessionParameters(). Especially since DVD-RAM and BD-R RRM are missing in K3B's list of overwritable media. > libk3bdevice/k3bdevice.cpp This mirrors sufficiently the growisofs gesture at https://sources.debian.net/src/dvd%2Brw-tools/7.1-11/growisofs_mmc.cpp/#L949 But there are more differences to BD-R POW in growisofs plusminus_r_C_parm() versus K3B getNextWritableAdress(). -------------------------------------------------------------------- The determination of the next_track number differs: https://sources.debian.net/src/dvd%2Brw-tools/7.1-11/growisofs_mmc.cpp/#L926 if (mmc_profile==0x41 && bdr_plus_pow) next_track = disc_info[6]|disc_info[11]<<8; else next_track = disc_info[5]|disc_info[10]<<8; So for BD-R POW, growisofs reads field "Last Track Number in Last Session" rather than "First Track Number in Last Session". (Not sure why it does this.) K3B has only first_track: int nextTrack = inf->first_track_l|inf->first_track_m<<8; The definition of disc_info_t in libk3bdevice/k3bmmc.h has corresponding fields .last_track_l and .last_track_m. I propose: int nextTrack; if( m == MEDIA_BD_R_SRM_POW ) nextTrack = inf->last_track_l|inf->last_track_m<<8; else nextTrack = inf->first_track_l|inf->first_track_m<<8; -------------------------------------------------------------------- Contrary to my statement on saturday, there is a deviation with lastSessionStart: https://sources.debian.net/src/dvd%2Brw-tools/7.1-11/growisofs_mmc.cpp/#L962 if (mmc_profile==0x41 && bdr_plus_pow) prev_session=0; else ... determination via READ PMA/TOC/ATIP ... K3B has: // Read start address of the first track in the last session if( readTocPmaAtip( trackData, 0x1, false, 0x0 ) ) { lastSessionStart = from4Byte( &trackData[8] ); success = true; } which should become // Read start address of the first track in the last session if( m == MEDIA_BD_R_SRM_POW ) { lastSessionStart = 0; success = true; } else { if( readTocPmaAtip( trackData, 0x1, false, 0x0 ) ) { lastSessionStart = from4Byte( &trackData[8] ); success = true; } } -------------------------------------------------------------------- Hopefully these are all deviations in getNextWritableAdress(). But growisofs has bdr_plus_pow mentioned in get_2k_capacity(). One would have to search for the corresponding code in K3B. We will need a courageous tester soon. (Expensive BD-R media will be at risk.) Have a nice day :) Thomas -- You are receiving this mail because: You are watching all bug changes.