diff -u3 -r cdrtools-2.01.01/mkisofs/mkisofs.c cdrtools-2.01.01-dvdaudio/mkisofs/mkisofs.c --- cdrtools-2.01.01/mkisofs/mkisofs.c 2004-09-28 13:59:08.000000000 +0100 +++ cdrtools-2.01.01-dvdaudio/mkisofs/mkisofs.c 2005-03-19 09:29:44.000000000 +0000 @@ -217,6 +217,7 @@ #ifdef DVD_VIDEO int dvd_video = 0; +int dvd_audio = 0; #endif #ifdef SORTING @@ -371,7 +372,8 @@ #define OPTION_UDF 1500 #endif #ifdef DVD_VIDEO -#define OPTION_DVD 1501 +#define OPTION_DVD_VIDEO 1501 +#define OPTION_DVD_AUDIO 1502 #endif #ifdef APPLE_HYB @@ -619,8 +621,10 @@ #endif #ifdef DVD_VIDEO - {{"dvd-video", no_argument, NULL, OPTION_DVD}, + {{"dvd-video", no_argument, NULL, OPTION_DVD_VIDEO}, '\0', NULL, "Generate DVD-Video compliant UDF file system", ONE_DASH}, + {{"dvd-audio", no_argument, NULL, OPTION_DVD_AUDIO}, + '\0', NULL, "Generate DVD-Audio compliant UDF file system", ONE_DASH}, #endif {{"uid", required_argument, NULL, OPTION_UID}, @@ -1814,10 +1818,15 @@ #endif #ifdef DVD_VIDEO - case OPTION_DVD: + case OPTION_DVD_VIDEO: use_udf++; dvd_video++; break; + + case OPTION_DVD_AUDIO: + use_udf++; + dvd_audio++; + break; #endif case OPTION_USE_FILEVERSION: use_fileversion++; @@ -2296,9 +2305,9 @@ * XXX This is a hack until we have a decent separate name handling * XXX for UDF filenames. */ - if (dvd_video && use_Joliet) { + if ((dvd_video || dvd_audio) && use_Joliet) { use_Joliet = 0; - error("Warning: Disabling Joliet support for DVD-Video.\n"); + error("Warning: Disabling Joliet support for DVD-Video/DVD-Audio.\n"); } if (use_udf && !use_Joliet) jlen = 255; diff -u3 -r cdrtools-2.01.01/mkisofs/mkisofs.h cdrtools-2.01.01-dvdaudio/mkisofs/mkisofs.h --- cdrtools-2.01.01/mkisofs/mkisofs.h 2004-05-26 23:54:59.000000000 +0100 +++ cdrtools-2.01.01-dvdaudio/mkisofs/mkisofs.h 2005-03-19 09:21:53.000000000 +0000 @@ -365,6 +365,7 @@ #ifdef DVD_VIDEO extern int dvd_video; +extern int dvd_audio; #endif /* DVD_VIDEO */ diff -u3 -r cdrtools-2.01.01/mkisofs/tree.c cdrtools-2.01.01-dvdaudio/mkisofs/tree.c --- cdrtools-2.01.01/mkisofs/tree.c 2004-06-12 14:16:37.000000000 +0100 +++ cdrtools-2.01.01-dvdaudio/mkisofs/tree.c 2005-03-19 09:24:18.000000000 +0000 @@ -1816,7 +1816,7 @@ * sort_matches would slow things to a crawl. */ - if (dvd_video) { + if (dvd_video || dvd_audio) { s_entry->sort = assign_dvd_weights(s_entry->name, this_dir, s_entry->sort); /* turn on sorting if necessary, regardless of cmd-line options */ if ((s_entry->sort != this_dir->sort) && do_sort == 0) diff -u3 -r cdrtools-2.01.01/mkisofs/udf.c cdrtools-2.01.01-dvdaudio/mkisofs/udf.c --- cdrtools-2.01.01/mkisofs/udf.c 2004-04-15 12:15:08.000000000 +0100 +++ cdrtools-2.01.01-dvdaudio/mkisofs/udf.c 2005-03-19 08:59:52.000000000 +0000 @@ -1433,6 +1433,21 @@ * The same thing is done for AUDIO_TS files, except in the 20000 range * instead of the 10000 range. * + * /AUDIO_TS/AUDIO_PP.IFO 21210 + * /AUDIO_TS/AUDIO_TS.IFO 21209 + * /AUDIO_TS/AUDIO_TS.VOB 21208 + * /AUDIO_TS/AUDIO_TS.BUP 21200 + * /AUDIO_TS/AUDIO_SV.IFO 21199 + * /AUDIO_TS/AUDIO_SV.VOB 21198 + * /AUDIO_TS/AUDIO_SV.BUP 21188 + * /AUDIO_TS/ATS_01_0.IFO 21187 + * /AUDIO_TS/ATS_01_0.VOB 21186 + * : : + * /AUDIO_TS/ATS_01_9.VOB 21177 + * /AUDIO_TS/ATS_01_0.BUP 21176 + * : : + * /AUDIO_TS/ATS_99_0.BUP 20000 + * * Question: what about JACKET_P files? * * Answer: At least as far as I know :) @@ -1455,6 +1470,7 @@ #endif { int ts_number; + int amg_number; int segment; int audio; @@ -1462,15 +1478,27 @@ return (val); if (memcmp(name, "VIDEO_TS", 8) == 0) { + amg_number = 0; ts_number = 0; audio = 0; } else if (memcmp(name, "VTS_", 4) == 0) { + amg_number = 0; ts_number = 1; audio = 0; + } else if (memcmp(name, "AUDIO_PP", 8) == 0) { + amg_number = 2; + ts_number = 0; + audio = 1; } else if (memcmp(name, "AUDIO_TS", 8) == 0) { + amg_number = 1; + ts_number = 0; + audio = 1; + } else if (memcmp(name, "AUDIO_SV", 8) == 0) { + amg_number = 0; ts_number = 0; audio = 1; } else if (memcmp(name, "ATS_", 4) == 0) { + amg_number = 0; ts_number = 1; audio = 1; } else { @@ -1478,7 +1506,8 @@ } if (this_dir->parent != root || - strcmp(this_dir->de_name, "VIDEO_TS") != 0) + ((strcmp(this_dir->de_name, "VIDEO_TS") != 0) && + (strcmp(this_dir->de_name, "AUDIO_TS") != 0))) return (val); if (ts_number == 0) { @@ -1496,11 +1525,11 @@ } if (strcmp(name+8, audio ? ".AOB" : ".VOB") == 0) { - return (audio * 10000 - ts_number * 12 - segment + 11198); + return (audio * 10000 - ts_number * 12 + amg_number * 10 - segment + 11198); } else if (strcmp(name+8, ".IFO") == 0) { - return (audio * 10000 - ts_number * 12 + 11199); + return (audio * 10000 - ts_number * 12 + amg_number * 10 + 11199); } else if (strcmp(name+8, ".BUP") == 0) { - return (audio * 10000 - ts_number * 12 + 11188); + return (audio * 10000 - ts_number * 12 + amg_number * 10 + 11188); } else { return (val); } diff -u3 -r cdrtools-2.01.01/mkisofs/write.c cdrtools-2.01.01-dvdaudio/mkisofs/write.c --- cdrtools-2.01.01/mkisofs/write.c 2004-08-24 17:21:55.000000000 +0100 +++ cdrtools-2.01.01-dvdaudio/mkisofs/write.c 2005-03-19 09:26:46.000000000 +0000 @@ -578,6 +578,7 @@ #ifndef DVD_VIDEO #define dvd_video 0 +#define dvd_audio 0 #endif #ifndef APPLE_HYB @@ -586,7 +587,7 @@ #if defined(APPLE_HYB) || defined(DVD_VIDEO) - if (apple_hyb || dvd_video) { + if (apple_hyb || dvd_video || dvd_audio) { /* * we may have to pad out ISO files to work with HFS * clump sizes @@ -991,7 +992,7 @@ * Shouldn't this be done for every type of sort? Otherwise * we will loose every pad info we add if we sort the files */ - if (dvd_video) { + if (dvd_video || dvd_audio) { start_extent += dwpnt->pad; } #endif /* DVD_VIDEO */