/// <summary> /// Encode image streams, generating a new store. /// </summary> /// <param name="store">Store name.</param> /// <param name="path">Store path.</param> /// <param name="output">Output store name.</param> /// <param name="quality">Start time relative to beginning.</param> /// <returns>Success flag.</returns> internal static int EncodeStore(string store, string path, string output, int quality) { Console.WriteLine($"Encoding store (store={store}, path={path}, output={output}, quality={quality}"); bool IsImageStream(IStreamMetadata streamInfo) { return(streamInfo.TypeName.StartsWith("Microsoft.Psi.Shared`1[[Microsoft.Psi.Imaging.Image,")); } void EncodeImageStreams(IStreamMetadata streamInfo, PsiImporter importer, Exporter exporter) { importer .OpenStream <Shared <Image> >(streamInfo.Name) .ToPixelFormat(PixelFormat.BGRA_32bpp) .EncodeJpeg(quality) .Write(streamInfo.Name, exporter, true); } PsiStore.Process(IsImageStream, EncodeImageStreams, (store, path), (output, path), true, new Progress <double>(p => Console.WriteLine($"Progress: {p * 100.0:F2}%")), Console.WriteLine); return(0); }