in Samples-NetCore/MusicManager/MusicManager.Applications/Controllers/TranscodingController.cs [199:235]
private async void TranscodeAsync(MusicFile musicFile)
{
var destinationFileName = GetDestinationFileName(musicFile.FileName);
var transcodeItem = new TranscodeItem(musicFile, destinationFileName);
transcodingManager.AddTranscodeItem(transcodeItem);
Log.Default.Trace("Start Transcode: {0} > {1}", musicFile.FileName, destinationFileName);
var cts = new CancellationTokenSource();
cancellationTokenSources.Add(transcodeItem, cts);
UpdateCancelCommands();
var metadata = await musicFile.GetMetadataAsync();
uint bitrate = GetConvertBitrate(metadata.Bitrate);
try
{
await TranscodeAsyncCore(transcodeItem, bitrate, cts.Token);
}
catch (OperationCanceledException)
{
transcodingManager.RemoveTranscodeItem(transcodeItem);
}
catch (Exception ex)
{
Log.Default.Error(ex, "TranscodeAsync exception");
transcodeItem.Error = ex;
}
finally
{
cancellationTokenSources.Remove(transcodeItem);
if (allTranscodingsCanceledCompletion != null && !cancellationTokenSources.Any())
{
allTranscodingsCanceledCompletion.SetResult(null);
}
UpdateCancelCommands();
Log.Default.Trace("End Transcode: {0} > {1}", musicFile.FileName, destinationFileName);
}
}