public WicImageContainer(IWICBitmapDecoder dec, WicPipelineContext ctx, FileFormat fmt) { WicDecoder = ctx.AddRef(dec); ContainerFormat = fmt; FrameCount = (int)dec.GetFrameCount(); }
private WicImageContainer(IWICBitmapDecoder dec, WicPipelineContext ctx) { wicContext = ctx; WicDecoder = ctx.AddRef(dec); WicContainerFormat = dec.GetContainerFormat(); ContainerFormat = formatMap.GetValueOrDefault(WicContainerFormat, FileFormat.Unknown); FrameCount = (int)dec.GetFrameCount(); }
unsafe public static WicImageContainer Create(ReadOnlySpan <byte> inBuffer, WicPipelineContext ctx) { fixed(byte *pbBuffer = inBuffer) { var istm = ctx.AddRef(Wic.Factory.CreateStream()); istm.InitializeFromMemory((IntPtr)pbBuffer, (uint)inBuffer.Length); var dec = createDecoder(stm => Wic.Factory.CreateDecoderFromStream(stm, null, WICDecodeOptions.WICDecodeMetadataCacheOnDemand), istm); return(new WicImageContainer(dec, ctx)); } }