private async Task <string> EncodeAsync(Func <Task <ThumbnailExtractionResult> > extractFunc)
        {
            var result = await extractFunc();

            File.Delete(ThumbnailPath);

            using (var encoder = new JpegEncoder())
                using (var fs = File.Create(ThumbnailPath))
                {
                    encoder.SetColorSpace(ColorSpace.Bgra8888);
                    encoder.SetResolution(result.Size);

                    await encoder.EncodeAsync(result.RawData, fs);

                    return(ThumbnailPath);
                }
        }