Beispiel #1
0
        private SafeCoTaskMemHandle CreateHeifWriter()
        {
            if (!this.stream.CanWrite)
            {
                throw new IOException(Resources.StreamCannotWrite);
            }

            this.writerErrors = new WriterErrors();
            var writerHandle = SafeCoTaskMemHandle.Allocate(MarshalHelper.SizeOf <heif_writer>());

            unsafe
            {
                var writer = (heif_writer *)writerHandle.DangerousGetHandle();

                writer->heif_writer_version = 1;
                writer->write = Marshal.GetFunctionPointerForDelegate(this.writeDelegate);
            }

            return(writerHandle);
        }
Beispiel #2
0
 protected HeifWriter()
 {
     this.heifWriterHandle = new DisposableLazy <SafeCoTaskMemHandle>(CreateHeifWriter);
     this.writerErrors     = new WriterErrors();
     this.writeDelegate    = Write;
 }