Ejemplo n.º 1
0
        private async Task RipTrack(ICdDrive cdDrive, Track track, TrackIdentification trackIdentification, CancellationToken token)
        {
            var currentTrackNumber = track.TrackNumber;

            using (var reader = new TrackReader(cdDrive))
            {
                var settings = _settings.Get();
                using (var lame = new LameMp3Encoder(new EncoderSettings
                {
                    Track = trackIdentification,
                    Mp3Settings = new Mp3Settings
                    {
                        Bitrate = settings.BitRate,
                        Type = settings.BitRateType
                    },
                    Output = new OutputLocationBuilder(settings.MusicCollectionRoot, settings.FileNameMask)
                }))
                {
                    reader.Progress += (read, bytes) =>
                    {
                        var percentageComplete = Math.Round(((double)read / (double)bytes) * 100d, 0);
                        _tracker.RippingProgress(currentTrackNumber, percentageComplete);
                    };
                    await reader.ReadTrack(track, lame.Write, token);
                }
            }
        }
Ejemplo n.º 2
0
 public void Dispose()
 {
     if (_drive != null)
     {
         if (_isLocked)
         {
             _isLocked = !_drive.UnLock().Result;
         }
     }
     _drive = null;
 }
Ejemplo n.º 3
0
 public TrackReader(ICdDrive drive)
 {
     _drive    = drive;
     _isLocked = drive.Lock().Result;
 }