mirror of
https://github.com/aaru-dps/RedBookPlayer.git
synced 2025-12-16 19:24:41 +00:00
Fix next/previous track, fix playing to end of track
This commit is contained in:
@@ -1,16 +1,17 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Aaru.CommonTypes.Enums;
|
using Aaru.CommonTypes.Enums;
|
||||||
|
using Aaru.CommonTypes.Structs;
|
||||||
using Aaru.Decoders.CD;
|
using Aaru.Decoders.CD;
|
||||||
|
using static Aaru.Decoders.CD.FullTOC;
|
||||||
using Aaru.DiscImages;
|
using Aaru.DiscImages;
|
||||||
using Aaru.Helpers;
|
using Aaru.Helpers;
|
||||||
using System.Linq;
|
|
||||||
using CSCore.SoundOut;
|
using CSCore.SoundOut;
|
||||||
using CSCore;
|
using CSCore;
|
||||||
using NWaves.Audio;
|
using NWaves.Audio;
|
||||||
using NWaves.Filters.BiQuad;
|
using NWaves.Filters.BiQuad;
|
||||||
using static Aaru.Decoders.CD.FullTOC;
|
|
||||||
using Aaru.CommonTypes.Structs;
|
|
||||||
|
|
||||||
namespace RedBookPlayer
|
namespace RedBookPlayer
|
||||||
{
|
{
|
||||||
@@ -102,12 +103,12 @@ namespace RedBookPlayer
|
|||||||
|
|
||||||
if (Image != null)
|
if (Image != null)
|
||||||
{
|
{
|
||||||
if (CurrentTrack < Image.Tracks.Count - 1 && CurrentSector >= Image.Tracks[CurrentTrack + 1].TrackStartSector ||
|
if ((CurrentTrack < Image.Tracks.Count - 1 && CurrentSector >= Image.Tracks[CurrentTrack + 1].TrackStartSector)
|
||||||
CurrentTrack > 0 && CurrentSector < Image.Tracks[CurrentTrack].TrackStartSector)
|
|| (CurrentTrack > 0 && CurrentSector < Image.Tracks[CurrentTrack].TrackStartSector))
|
||||||
{
|
{
|
||||||
foreach (Track track in Image.Tracks)
|
foreach (Track track in Image.Tracks.ToArray().Reverse())
|
||||||
{
|
{
|
||||||
if (track.TrackStartSector >= CurrentSector)
|
if (CurrentSector >= track.TrackStartSector)
|
||||||
{
|
{
|
||||||
CurrentTrack = (int)track.TrackSequence - 1;
|
CurrentTrack = (int)track.TrackSequence - 1;
|
||||||
break;
|
break;
|
||||||
@@ -284,7 +285,7 @@ namespace RedBookPlayer
|
|||||||
{
|
{
|
||||||
return Image.ReadSectors(CurrentSector, (uint)sectorsToRead).Concat(zeroSectors).ToArray();
|
return Image.ReadSectors(CurrentSector, (uint)sectorsToRead).Concat(zeroSectors).ToArray();
|
||||||
}
|
}
|
||||||
catch (System.Exception)
|
catch (System.ArgumentOutOfRangeException)
|
||||||
{
|
{
|
||||||
LoadTrack(0);
|
LoadTrack(0);
|
||||||
return Image.ReadSectors(CurrentSector, (uint)sectorsToRead).Concat(zeroSectors).ToArray();
|
return Image.ReadSectors(CurrentSector, (uint)sectorsToRead).Concat(zeroSectors).ToArray();
|
||||||
@@ -390,10 +391,14 @@ namespace RedBookPlayer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (++CurrentTrack >= Image.Tracks.Count)
|
if (CurrentTrack + 1 >= Image.Tracks.Count)
|
||||||
{
|
{
|
||||||
CurrentTrack = 0;
|
CurrentTrack = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CurrentTrack++;
|
||||||
|
}
|
||||||
|
|
||||||
LoadTrack(CurrentTrack);
|
LoadTrack(CurrentTrack);
|
||||||
}
|
}
|
||||||
@@ -413,10 +418,14 @@ namespace RedBookPlayer
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (--CurrentTrack < 0)
|
if (CurrentTrack - 1 < 0)
|
||||||
{
|
{
|
||||||
CurrentTrack = Image.Tracks.Count - 1;
|
CurrentTrack = Image.Tracks.Count - 1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CurrentTrack--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user