Worker ตัวถอดรหัสแบบแยกการขัดข้อง
HotPDF สามารถย้ายการถอดรหัสภาพที่มีความเสี่ยงสูง DCTDecode, JPXDecode และ JBIG2Decode ออกจากกระบวนการโฮสต์
โหมดการแยก
cimAutomaticเป็นค่าเริ่มต้นและใช้HotPDFCodecWorker.exeเมื่อพร้อมใช้ข้างไฟล์ปฏิบัติการของโฮสต์ มิฉะนั้นจะรักษาเส้นทางในกระบวนการที่เข้ากันได้cimRequiredล้มเหลวแบบปิดเมื่อ worker หายไป เริ่มไม่ได้ ขัดข้องหมดเวลา ปฏิเสธอินพุต หรือเกินขีดจำกัดเอาต์พุตcimDisabledใช้ตัวถอดรหัสในกระบวนการที่มีอยู่เสมอ
เมื่อ worker ที่พร้อมใช้ยอมรับคำขอแล้ว cimAutomatic จะไม่ลองอินพุตที่ล้มเหลวหรือที่เป็นอันตรายอีกในกระบวนการโฮสต์
ขอบเขตกระบวนการ
คำขอถอดรหัสแต่ละรายการทำงานในกระบวนการที่ซ่อนใหม่ที่กำหนดให้กับ Windows Job Object แบบกระบวนการเดียว
- Job Object ยุติ worker และลูกหลานที่พยายามสร้างเมื่อ handle ของมันปิด
CodecWorkerMemoryLimitBytesใช้เพดานหน่วยความจำ committed ต่อกระบวนการและค่าเริ่มต้นเป็น 512 MiBCodecWorkerTimeoutMillisecondsค่าเริ่มต้นเป็น 10,000 ms และยุติ worker ที่ค้าง- อินพุตที่เข้ารหัส ตัวแปรส่วนกลาง JBIG2 ทางเลือก และเอาต์พุต BGR24 ใช้การแมปหน่วยความจำร่วมที่ตั้งชื่อแบบสุ่มหนึ่งรายการพร้อมโปรโตคอลความกว้างคงที่แบบ version
- ความจุเอาต์พุตที่ถอดรหัสถูกจำกัดโดยเรขาคณิตภาพที่ประกาศและ
DecodeBudgetBytes - คำขอ JPEG ความละเอียดต่ำเก็บมิติเป้าหมายที่แน่นอนและส่งคืนเรขาคณิต DCT แบบลดโดยไม่สร้าง raster worker ความละเอียดเต็ม
การกำหนดค่า
PDF.CodecIsolationMode := cimRequired;
PDF.CodecWorkerExecutable :=
'C:\Program Files\MyApp\HotPDFCodecWorker.exe';
PDF.CodecWorkerTimeoutMilliseconds := 5000;
PDF.CodecWorkerMemoryLimitBytes := 256 * 1024 * 1024;
Bitmap := PDF.ExtractLoadedImage(0);
if Bitmap = nil then
begin
PDF.GetLastCodecWorkerInfo(Info);
Writeln(Ord(Info.Status), ': ', Info.ErrorMessage);
end;
CodecWorkerExecutable ที่ว่างเปล่าแปรเป็น HotPDFCodecWorker.exe ข้างแอปพลิเคชันปัจจุบัน
Telemetry
GetLastCodecWorkerInfo รายงานสถานะ ตัวระบุกระบวนการ รหัสออก จำนวนมิลลิวินาที และการวินิจฉัยฝั่งโฮสต์แบบจำกัด
GetLastJPEGReducedDecodeInfo รายงานเรขาคณิตต้นทาง แบบย่อ เอาต์พุต และ scanline หลังคำขอ JPEG แบบลดแบบแยก
สถานะที่ต่างกันครอบคลุม worker ที่ใช้ไม่ได้หรือรันไม่ได้ หมดเวลา ขัดข้อง การปฏิเสธการถอดรหัส โปรโตคอลไม่ตรงกัน และขีดจำกัดเอาต์พุตที่ถอดรหัส
การสร้างและการปรับใช้
build-HotPDF-Codec-Worker.cmd
คำสั่ง build ปล่อย worker Win32 และ Win64 แยกกันภายใต้ tools\CodecWorker\<platform>\Release ปรับใช้ worker ที่ตรงกับสถาปัตยกรรมกระบวนการโฮสต์