mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Allow to write multisession DVD/Blu-ray in Aaru Image Format and CDRWin.
This commit is contained in:
@@ -42,17 +42,19 @@ namespace Aaru.DiscImages
|
||||
{
|
||||
public partial class AaruFormat
|
||||
{
|
||||
public OpticalImageCapabilities OpticalCapabilities => OpticalImageCapabilities.CanStoreAudioTracks |
|
||||
OpticalImageCapabilities.CanStoreDataTracks |
|
||||
OpticalImageCapabilities.CanStorePregaps |
|
||||
OpticalImageCapabilities.CanStoreSubchannelRw |
|
||||
OpticalImageCapabilities.CanStoreSessions |
|
||||
OpticalImageCapabilities.CanStoreIsrc |
|
||||
OpticalImageCapabilities.CanStoreCdText |
|
||||
OpticalImageCapabilities.CanStoreMcn |
|
||||
OpticalImageCapabilities.CanStoreRawData |
|
||||
OpticalImageCapabilities.CanStoreCookedData |
|
||||
OpticalImageCapabilities.CanStoreMultipleTracks;
|
||||
public OpticalImageCapabilities OpticalCapabilities => OpticalImageCapabilities.CanStoreAudioTracks |
|
||||
OpticalImageCapabilities.CanStoreDataTracks |
|
||||
OpticalImageCapabilities.CanStorePregaps |
|
||||
OpticalImageCapabilities.CanStoreSubchannelRw |
|
||||
OpticalImageCapabilities.CanStoreSessions |
|
||||
OpticalImageCapabilities.CanStoreIsrc |
|
||||
OpticalImageCapabilities.CanStoreCdText |
|
||||
OpticalImageCapabilities.CanStoreMcn |
|
||||
OpticalImageCapabilities.CanStoreRawData |
|
||||
OpticalImageCapabilities.CanStoreCookedData |
|
||||
OpticalImageCapabilities.CanStoreMultipleTracks |
|
||||
OpticalImageCapabilities.CanStoreNotCdSessions |
|
||||
OpticalImageCapabilities.CanStoreNotCdTracks;
|
||||
public ImageInfo Info => imageInfo;
|
||||
public string Name => "Aaru Format";
|
||||
public Guid Id => new Guid("49360069-1784-4A2F-B723-0C844D610B0A");
|
||||
|
||||
@@ -1025,8 +1025,7 @@ namespace Aaru.DiscImages
|
||||
if(trk.TrackSequence == 0 &&
|
||||
trk.TrackStartSector == 0 &&
|
||||
trk.TrackEndSector == 0)
|
||||
throw new ArgumentOutOfRangeException(nameof(sectorAddress),
|
||||
"Can't found track containing requested sector");
|
||||
trk.TrackType = TrackType.Data; // TODO: Check intersession data type
|
||||
}
|
||||
|
||||
// Close current block first
|
||||
@@ -1239,11 +1238,7 @@ namespace Aaru.DiscImages
|
||||
if(track.TrackSequence == 0 &&
|
||||
track.TrackStartSector == 0 &&
|
||||
track.TrackEndSector == 0)
|
||||
{
|
||||
ErrorMessage = $"Can't found track containing {sectorAddress}";
|
||||
|
||||
return false;
|
||||
}
|
||||
track.TrackType = TrackType.Data;
|
||||
|
||||
if(data.Length != 2352)
|
||||
{
|
||||
@@ -1672,8 +1667,10 @@ namespace Aaru.DiscImages
|
||||
if(track.TrackSequence == 0 &&
|
||||
track.TrackStartSector == 0 &&
|
||||
track.TrackEndSector == 0)
|
||||
track.TrackType = TrackType.Data; // TODO: Check intersession data type
|
||||
else if(sectorAddress + length > track.TrackEndSector + 1)
|
||||
{
|
||||
ErrorMessage = $"Can't found track containing {sectorAddress}";
|
||||
ErrorMessage = "Can't cross tracks";
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -1685,13 +1682,6 @@ namespace Aaru.DiscImages
|
||||
return false;
|
||||
}
|
||||
|
||||
if(sectorAddress + length > track.TrackEndSector + 1)
|
||||
{
|
||||
ErrorMessage = "Can't cross tracks";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
sector = new byte[2352];
|
||||
|
||||
for(uint i = 0; i < length; i++)
|
||||
@@ -3494,11 +3484,7 @@ namespace Aaru.DiscImages
|
||||
if(track.TrackSequence == 0 &&
|
||||
track.TrackStartSector == 0 &&
|
||||
track.TrackEndSector == 0)
|
||||
{
|
||||
ErrorMessage = $"Can't found track containing {sectorAddress}";
|
||||
|
||||
return false;
|
||||
}
|
||||
track.TrackType = TrackType.Data;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -41,16 +41,18 @@ namespace Aaru.DiscImages
|
||||
{
|
||||
public partial class CdrWin
|
||||
{
|
||||
public OpticalImageCapabilities OpticalCapabilities => OpticalImageCapabilities.CanStoreAudioTracks |
|
||||
OpticalImageCapabilities.CanStoreDataTracks |
|
||||
OpticalImageCapabilities.CanStorePregaps |
|
||||
OpticalImageCapabilities.CanStoreSessions |
|
||||
OpticalImageCapabilities.CanStoreIsrc |
|
||||
OpticalImageCapabilities.CanStoreCdText |
|
||||
OpticalImageCapabilities.CanStoreMcn |
|
||||
OpticalImageCapabilities.CanStoreRawData |
|
||||
OpticalImageCapabilities.CanStoreCookedData |
|
||||
OpticalImageCapabilities.CanStoreMultipleTracks;
|
||||
public OpticalImageCapabilities OpticalCapabilities => OpticalImageCapabilities.CanStoreAudioTracks |
|
||||
OpticalImageCapabilities.CanStoreDataTracks |
|
||||
OpticalImageCapabilities.CanStorePregaps |
|
||||
OpticalImageCapabilities.CanStoreSessions |
|
||||
OpticalImageCapabilities.CanStoreIsrc |
|
||||
OpticalImageCapabilities.CanStoreCdText |
|
||||
OpticalImageCapabilities.CanStoreMcn |
|
||||
OpticalImageCapabilities.CanStoreRawData |
|
||||
OpticalImageCapabilities.CanStoreCookedData |
|
||||
OpticalImageCapabilities.CanStoreMultipleTracks |
|
||||
OpticalImageCapabilities.CanStoreNotCdSessions |
|
||||
OpticalImageCapabilities.CanStoreNotCdTracks;
|
||||
public ImageInfo Info => _imageInfo;
|
||||
public string Name => "CDRWin cuesheet";
|
||||
public Guid Id => new Guid("664568B2-15D4-4E64-8A7A-20BDA8B8386F");
|
||||
@@ -72,14 +74,12 @@ namespace Aaru.DiscImages
|
||||
{
|
||||
var aaruTrack = new Track
|
||||
{
|
||||
Indexes = cdrTrack.Indexes, TrackDescription = cdrTrack.Title,
|
||||
TrackPregap = cdrTrack.Pregap,
|
||||
TrackSession = cdrTrack.Session, TrackSequence = cdrTrack.Sequence,
|
||||
TrackType = CdrWinTrackTypeToTrackType(cdrTrack.TrackType),
|
||||
TrackFile = cdrTrack.TrackFile.DataFilter.GetFilename(),
|
||||
TrackFilter = cdrTrack.TrackFile.DataFilter,
|
||||
TrackFileOffset = cdrTrack.TrackFile.Offset,
|
||||
TrackFileType = cdrTrack.TrackFile.FileType, TrackRawBytesPerSector = cdrTrack.Bps,
|
||||
Indexes = cdrTrack.Indexes, TrackDescription = cdrTrack.Title, TrackPregap = cdrTrack.Pregap,
|
||||
TrackSession = cdrTrack.Session, TrackSequence = cdrTrack.Sequence,
|
||||
TrackType = CdrWinTrackTypeToTrackType(cdrTrack.TrackType),
|
||||
TrackFile = cdrTrack.TrackFile.DataFilter.GetFilename(),
|
||||
TrackFilter = cdrTrack.TrackFile.DataFilter, TrackFileOffset = cdrTrack.TrackFile.Offset,
|
||||
TrackFileType = cdrTrack.TrackFile.FileType, TrackRawBytesPerSector = cdrTrack.Bps,
|
||||
TrackBytesPerSector = CdrWinTrackTypeToCookedBytesPerSector(cdrTrack.TrackType)
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user