public int ReadTrack(int track, CdDataReadEventHandler DataReadEvent, uint StartSecond, uint Seconds2Read, CdReadProgressEventHandler ProgressEvent) { if (((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack)) && (DataReadEvent != null)) { ReadProgressEventArgs args; int startSector = this.GetStartSector(track); int endSector = this.GetEndSector(track); if ((startSector += ((int)(StartSecond * 0x4b))) >= endSector) { startSector -= (int)(StartSecond * 0x4b); } if ((Seconds2Read > 0) && ((startSector + ((int)(Seconds2Read * 0x4b))) < endSector)) { endSector = startSector + ((int)(Seconds2Read * 0x4b)); } uint num3 = (uint)((endSector - startSector) * 0x930); uint bytesread = 0; byte[] buffer = new byte[0x7770]; bool flag = true; bool flag2 = true; if (ProgressEvent != null) { args = new ReadProgressEventArgs(num3, 0); ProgressEvent(this, args); flag = !args.CancelRead; } for (int i = startSector; ((i < endSector) && flag) && flag2; i += 13) { int numSectors = ((i + 13) < endSector) ? 13 : (endSector - i); flag2 = this.ReadSector(i, buffer, numSectors); if (flag2) { DataReadEventArgs ea = new DataReadEventArgs(buffer, (uint)(0x930 * numSectors)); DataReadEvent(this, ea); bytesread += (uint)(0x930 * numSectors); if (ProgressEvent != null) { args = new ReadProgressEventArgs(num3, bytesread); ProgressEvent(this, args); flag = !args.CancelRead; } } } if (flag2) { return((int)bytesread); } return(-1); } return(-1); }
public int ReadTrack(int track, CdDataReadEventHandler DataReadEvent, uint StartSecond, uint Seconds2Read, CdReadProgressEventHandler ProgressEvent) { if (((this.TocValid && (track >= this.Toc.FirstTrack)) && (track <= this.Toc.LastTrack)) && (DataReadEvent != null)) { ReadProgressEventArgs args; int startSector = this.GetStartSector(track); int endSector = this.GetEndSector(track); if ((startSector += ((int)(StartSecond * 0x4b))) >= endSector) { startSector -= (int)(StartSecond * 0x4b); } if ((Seconds2Read > 0) && ((startSector + ((int)(Seconds2Read * 0x4b))) < endSector)) { endSector = startSector + ((int)(Seconds2Read * 0x4b)); } uint num3 = (uint)((endSector - startSector) * 0x930); uint bytesread = 0; byte[] buffer = new byte[0x7770]; bool flag = true; bool flag2 = true; if (ProgressEvent != null) { args = new ReadProgressEventArgs(num3, 0); ProgressEvent(this, args); flag = !args.CancelRead; } for (int i = startSector; ((i < endSector) && flag) && flag2; i += 13) { int numSectors = ((i + 13) < endSector) ? 13 : (endSector - i); flag2 = this.ReadSector(i, buffer, numSectors); if (flag2) { DataReadEventArgs ea = new DataReadEventArgs(buffer, (uint)(0x930 * numSectors)); DataReadEvent(this, ea); bytesread += (uint)(0x930 * numSectors); if (ProgressEvent != null) { args = new ReadProgressEventArgs(num3, bytesread); ProgressEvent(this, args); flag = !args.CancelRead; } } } if (flag2) { return (int)bytesread; } return -1; } return -1; }
public void OnCdDataRead(object sender, DataReadEventArgs ea) { Buffer.BlockCopy(ea.Data, 0, BufferArray, WritePosition, (int)ea.DataSize); WritePosition += (int)ea.DataSize; }