فك التشفير بالأجهزة: ما هو، مبدأ العمل والفوائد

المؤلف: IT Sectr نُشر: 2026-05-25 وقت القراءة: 9 دق

Hardware decoding هو فك ضغط بيانات الوسائط باستخدام رقاقات GPU المتخصصة أو DSP أو معالجات الفيديو داخل SoC. على عكس فك التشفير البرمجي، يتم فك التشفير بالأجهزة على دوائر مادية مصممة حصرياً لفك ضغط الفيديو. وفقاً لوثائق Apple VideoToolbox (2026)، يحقق فك التشفير بالأجهزة على رقاقات السلسلة A كفاءة طاقة تبلغ 0.3 واط لـ 4K H.264 بمعدل 60 إطاراً في الثانية.

الخلاصة

  • Hardware decoding — فك ضغط الوسائط على وحدات SoC متخصصة دون تحميل CPU الرئيسي
  • استهلاك الطاقة لوحدة فك التشفير بالأجهزة أقل 5–10 مرات من البرمجي بنفس الجودة
  • زمن الاستجابة لفك التشفير بالأجهزة 5–15 مللي ثانية مقابل 30–80 مللي ثانية للبرمجي
  • دعم التنسيقات محدود بالوحدات المادية: H.264، H.265، VP9، AV1 على SoC 2023+
  • API: VideoToolbox على iOS وMediaCodec على Android يوفران الوصول إلى وحدات فك التشفير بالأجهزة

ما هو فك التشفير بالأجهزة؟

Hardware decoding هو عملية فك ضغط بيانات الوسائط التي تتم ليس على CPU للأغراض العامة، بل على دوائر متكاملة متخصصة مدمجة في النظام على رقاقة (SoC). تسمى هذه الوحدات وحدات فك تشفير الفيديو أو VPU (Video Processing Unit) وهي مسرعات ASIC محسنة لخوارزميات ضغط محددة.

تحتوي SoC المحمولة الحديثة على وحدات أجهزة منفصلة لكل ترميز شائع. على سبيل المثال، تشتمل رقاقة Apple A17 Pro على وحدات فك تشفير لـ H.264 وH.265 وVP9 وAV1 وProRes. كل وحدة عبارة عن خط أنابيب معالجة كامل قادر على استقبال تدفق بتات مضغوط عند الإدخال وإخراج إطارات مفكوكة جاهزة بتنسيق YUV أو BGRA دون مشاركة CPU.

أصبح فك التشفير بالأجهزة معياراً في صناعة الهواتف المحمولة في 2012–2013، عندما تضمن Qualcomm Snapdragon 800 وApple A7 لأول مرة وحدات فك تشفير H.264 مخصصة. منذ ذلك الحين، تطورت التقنية من دعم تنسيق واحد إلى وحدات متعددة التنسيقات عالمية قادرة على فك تشفير تدفقات متعددة في وقت واحد — على سبيل المثال، لوضع PiP مع تدفق فيديو منفصل.

كيف يعمل فك التشفير بالأجهزة؟

تختلف عملية فك التشفير بالأجهزة اختلافاً جوهرياً عن البرمجية. بدلاً من التنفيذ المتسلسل لتعليمات CPU، تنفذ وحدة الأجهزة دوائر مادية لكل مرحلة من مراحل فك الضغط: فك التشفير الإنتروبي، التكميم العكسي، تحويل جيب التمام العكسي (DCT) وتعويض الحركة.

هندسة وحدة فك التشفير بالأجهزة

تتكون وحدة فك التشفير بالأجهزة النموذجية من عدة مراحل لخط الأنابيب. المرحلة الأولى هي وحدة فك التشفير الإنتروبي، المنفذة كآلة حالة محدودة (FSM) لـ CABAC أو CAVLC. على عكس التنفيذ البرمجي حيث تتم معالجة كل بت من خلال فروع شرطية، يستخدم CABAC بالأجهزة دوائر تنبؤ سياق متوازية، مما يسمح بمعالجة 2–3 بت لكل دورة بدلاً من بت واحد.

المرحلة الثانية هي وحدة DCT العكسي. يتطلب DCT البرمجي حلقات ضرب وتراكم على CPU. يستخدم التنفيذ بالأجهزة مضاعف مصفوفة يحسب جميع معاملات 64 لكتلة 8x8 في دورة واحدة. DCT العكسي بالأجهزة يعمل بتردد 400–600 ميجاهرتز ويعالج حتى 4 ملايين ماكروبلوك في الثانية، وهو كافٍ لفك تشفير فيديو 8K في الوقت الفعلي.

المرحلة الثالثة هي وحدة تعويض الحركة (MC). بالتوازي مع DCT العكسي، تستقبل وحدة الأجهزة متجهات الحركة من تدفق البتات وتستخرج المناطق المرجعية من مخزن الإطارات المفكوكة. يخزن مخزن DPB (Decoded Picture Buffer) حتى 16 إطاراً مرجعياً، يتم الوصول إليها من خلال ذاكرة تخزين مؤقت متخصصة منخفضة زمن الوصول. تستخدم وحدات فك التشفير الحديثة التنبؤ بالتمويه التكيفي والاستيفاء دون البكسل، وهو أمر بالغ الأهمية لـ H.265 وAV1.

التفاعل مع النظام

تتم إدارة وحدة فك التشفير بالأجهزة من خلال وحدة تحكم DMA. يمرر التطبيق مؤشراً إلى البيانات المضغوطة في الذاكرة المشتركة لوحدة فك التشفير، وتقرأ وحدة فك التشفير نفسها تدفق البتات من خلال الوصول المباشر للذاكرة. بعد اكتمال فك تشفير الإطار، يقوم مقاطعة بإعلام برنامج التشغيل، ويصبح الإطار الجاهز متاحاً في مجموعة مخازن الإخراج. تلغي هذه الآلية تماماً تحميل CPU أثناء معالجة البيانات — يعالج المعالج فقط بدء فك التشفير ويستقبل النتيجة النهائية.

VideoToolbox وMediaCodec: مقارنة المنصات

توفر كلتا المنصتين المحمولتين API أصلية لفك التشفير بالأجهزة، ولكن بطرق مختلفة لإدارة المخازن ودورة حياة وحدة فك التشفير. VideoToolbox على iOS مدمج بإحكام مع Metal لإخراج الشاشة، بينما يستخدم MediaCodec على Android Surface للعرض المباشر.

المعاملVideoToolbox (iOS)MediaCodec (Android)
تنسيق الإخراجCVPixelBuffer (Metal/OpenGL)Surface أو ByteBuffer
إدارة الذاكرةتلقائية عبر poolيدوية عبر dequeue
أمان الخيوطنعم، رد اتصال غير متزامننعم، API متزامن
دعم HDRنعم (PQ, HLG)نعم (HDR10, HDR10+)
تعدد فك التشفيرحتى 4 جلسات (A17)يعتمد على SoC

VideoToolbox هو إطار عمل لفك التشفير بالأجهزة على iOS وmacOS. يستخدم نموذج فك تشفير غير متزامن: يعود VTDecompressionSessionDecodeFrame فوراً، وتصل الإطارات الجاهزة عبر رد اتصال على قائمة انتظار منفصلة. يدير VideoToolbox تلقائياً مجموعة مخازن البكسلات (CVPixelBufferPool) ويمكنه إعادة استخدام المخازن المحررة لإطارات جديدة. لفيديو HDR، يدعم VideoToolbox مساحات الألوان ITU-R BT.2020 وEOTF PQ/HLG.

MediaCodec يستخدم نموذجاً متزامناً مع قوائم انتظار مخازن الإدخال والإخراج. يستدعي التطبيق بشكل دوري dequeueInputBuffer لإرسال البيانات المضغوطة وdequeueOutputBuffer لاستقبال النتيجة المفكوكة. يمنح هذا النهج المطور تحكماً كاملاً في وتيرة فك التشفير، وهو أمر مهم لمزامنة الصوت والفيديو. لإخراج الشاشة، يقبل MediaCodec Surface، مما يسمح بفك التشفير مباشرة على GPU دون نسخ عبر CPU.

مزايا فك التشفير بالأجهزة

يوفر فك التشفير بالأجهزة ثلاث مزايا رئيسية مقارنة بالبرمجي: كفاءة الطاقة والأداء والاستقرار. كل منها بالغ الأهمية للأجهزة المحمولة ذات موارد البطارية المحدودة والقيود الحرارية.

كفاءة الطاقة

الميزة الرئيسية لفك التشفير بالأجهزة هي استهلاك طاقة أقل بشكل جذري. تستهلك وحدة فك التشفير بالأجهزة النموذجية H.264/H.265 مقدار 0.2–0.5 واط عند فك تشفير فيديو 1080p في الوقت الفعلي. بالمقارنة، يستهلك فك التشفير البرمجي لنفس التدفق على CPU مقدار 1.5–4 واط اعتماداً على بنية المعالج. الفرق بمقدار 5–10 مرات يؤثر مباشرة على عمر البطارية: مع فك التشفير بالأجهزة، يسمح تشغيل الفيديو بمشاهدة الأفلام لمدة 10–15 ساعة مقابل 2–4 ساعة مع فك التشفير البرمجي على CPU.

يتم تحقيق كفاءة الطاقة من خلال التخصص الضيق. على عكس CPU الذي ينفذ مجموعة واسعة من التعليمات وله منطق تحكم معقد، تحتوي وحدة فك التشفير بالأجهزة فقط على الدوائر اللازمة لخوارزمية محددة. التردد لهذه الوحدات هو 200–600 ميجاهرتز مقابل 2–3 جيجاهرتز لـ CPU، مما يقلل استهلاك الطاقة الديناميكي بشكل متناسب مع مربع الجهد.

الأداء وتبديد الحرارة

يوفر فك التشفير بالأجهزة معدلات إطارات مضمونة حتى للدقة العالية. بفضل بنية خط الأنابيب، يمكن لوحدة الأجهزة معالجة مراحل متعددة من فك الضغط في وقت واحد: بينما تقوم وحدة واحدة بفك التشفير الإنتروبي للماكروبلوك التالي، تطبق أخرى بالفعل DCT العكسي على الحالي. هذا التوازي غير قابل للتحقيق على CPU، حيث كل مرحلة هي عملية تسلسلية.

تبديد حرارة وحدة فك التشفير بالأجهزة أقل بكثير: وحدة نموذجية تبدد 0.3–0.8 واط من الحرارة مقابل 2–6 واط لـ CPU أثناء فك تشفير فيديو 4K. هذا يعني أن الجهاز لا يسخن حتى أثناء المشاهدة المطولة، ولا يحدث الاختناق الحراري، ويحصل المستخدم على 60 إطاراً في الثانية ثابتة دون انخفاض. درجة حرارة الهيكل أثناء فك التشفير بالأجهزة عادة ما تكون أقل بمقدار 5–10 درجات من فك التشفير البرمجي، وهو أمر مهم بشكل خاص للأجهزة اللوحية بدون تبريد نشط.

أمثلة كود فك التشفير بالأجهزة

لنلق نظرة على تنفيذ عملي لفك التشفير بالأجهزة مع معالجة ردود الاتصال على iOS عبر VideoToolbox وخط أنابيب كامل على Android عبر MediaCodec.

مثال كامل لفك التشفير بالأجهزة على iOS

swift
import VideoToolbox
import CoreMedia

class HardwareDecoder {
    var session: VTDecompressionSession?
    
    func setup() {
        let formatDesc = createFormatDescription()
        var callback = VTDecompressionOutputCallbackRecord(
            decompressionOutputCallback: decodingCallback,
            decompressionOutputRefCon: nil
        )
        VTDecompressionSessionCreate(
            allocator: nil,
            videoFormatDescription: formatDesc,
            videoDecoderSpecification: nil,
            destinationImageBufferAttributes: nil,
            outputCallback: &callback,
            decompressionSessionOut: &session
        )
    }
    
    func decode(sampleBuffer: CMSampleBuffer) {
        VTDecompressionSessionDecodeFrame(
            session!, sampleBuffer: sampleBuffer,
            flags: ._EnableAsynchronousDecompression,
            frameRefcon: nil, infoFlagsOut: nil
        )
    }
}

يقوم الكود بإنشاء جلسة فك تشفير VideoToolbox مع رد اتصال غير متزامن. يكتشف VTDecompressionSessionCreate تلقائياً وحدة فك التشفير بالأجهزة المتاحة بناءً على CMVideoFormatDescription المقدم. العلم kVTDecodeFrame_EnableAsynchronousDecompression يفعل الوضع غير المتزامن — لا يتم حظر التطبيق أثناء فك التشفير ويستقبل الإطارات عبر رد الاتصال. لـ H.264، يجب أولاً إنشاء وصف التنسيق من وحدات NAL SPS/PPS عبر CMVideoFormatDescriptionCreateFromH264ParameterSets.

فك التشفير بالأجهزة على Android مع إخراج إلى Surface

kotlin
class HardwareDecoder(private val surface: Surface) {
    private var mediaCodec: MediaCodec? = null
    
    fun initDecoder(mimeType: String, width: Int, height: Int) {
        mediaCodec = MediaCodec.createDecoderByType(mimeType)
        val format = MediaFormat.createVideoFormat(mimeType, width, height)
        
        mediaCodec?.configure(format, surface, null, 0)
        mediaCodec?.start()
    }
    
    fun feedFrame(data: ByteArray, pts: Long) {
        val inputIndex = mediaCodec!!.dequeueInputBuffer(TIMEOUT_US)
        if (inputIndex >= 0) {
            val buffer = mediaCodec!!.getInputBuffer(inputIndex)
            buffer?.put(data)
            mediaCodec!!.queueInputBuffer(inputIndex, 0, data.size, pts, 0)
        }
    }
}

الكود بلغة Kotlin ينشئ MediaCodec مرتبطاً بـ Surface، مما يضمن إخراجاً مباشراً إلى الشاشة دون نسخ البيانات عبر CPU. تستخدم المعلمة mimeType ثوابت MediaFormat: video/avc لـ H.264، video/hevc لـ H.265، video/av01 لـ AV1. تنتظر طريقة dequeueInputBuffer مخزناً إدخالياً متاحاً بوقت مهلة؛ إذا لم يكن المخزن متاحاً، يتم تخطي الإطار الحالي، مما يمنع تجاوز سعة قائمة الانتظار عند معدل بت غير متساوٍ.

متى تختار فك التشفير بالأجهزة

فك التشفير بالأجهزة هو الخيار الأمثل لمعظم سيناريوهات الإنتاج، ولكنه ليس حلاً عالمياً. يساعد فهم حدود التطبيق في تجنب المواقف التي يؤدي فيها نقص دعم الترميز بالأجهزة إلى كسر تجربة المستخدم.

سيناريوهات الاستخدام الإلزامي

فك التشفير بالأجهزة إلزامي في ثلاث حالات: تشغيل الفيديو المطول (أكثر من 30 دقيقة)، فك تشفير محتوى 4K، وأي تطبيق يركز على أقصى عمر للبطارية. خدمات البث (Netflix، YouTube، Twitch) تستخدم حصرياً فك التشفير بالأجهزة، لأن البرمجي لا يمكنه ضمان تشغيل مستقر بمعدلات بت عالية ودقة كبيرة. لهذه الخدمات، دعم DRM (FairPlay، Widevine) ضروري، وهو متاح فقط من خلال وحدة الأجهزة التي توفر خط أنابيب محمياً من وحدة فك التشفير إلى إخراج الشاشة.

للألعاب ذات الفيديو المدمج (مشاهد قطعية، إعلانات، مقاطع داخل اللعبة)، يوصى أيضاً بفك التشفير بالأجهزة. محركات الألعاب الحديثة مثل Unity وUnreal Engine لديها دعم مدمج لـ VideoToolbox وMediaCodec. فك التشفير بالأجهزة في الألعاب يحرر CPU لمحاكاة الفيزياء وذكاء الأعداء ومعالجة الإدخال، مما يحسن الأداء العام.

القيود والاحتياطي

القيود الرئيسية لفك التشفير بالأجهزة هي الاعتماد على دعم تنسيق الأجهزة. إذا كان SoC لا يحتوي على وحدة فك تشفير لـ AV1 (على سبيل المثال، أجهزة Snapdragon 8 Gen 1)، يجب على التطبيق توفير احتياطي برمجي عبر FFmpeg وdav1d. نفس الوضع ينطبق على H.265 في الأجهزة القديمة وProRes، الذي يتم دعمه فقط على رقاقات Apple A13+ لفك التشفير. يوصى بالتحقق من توفر وحدة فك تشفير بالأجهزة للتنسيق المطلوب قبل بدء التشغيل واختيار استراتيجية فك التشفير ديناميكياً.

القيود الثاني هو عدد جلسات فك التشفير المتزامنة. معظم SoC تدعم 1–2 وحدات فك تشفير بالأجهزة متوازية. عند محاولة فتح جلسة ثالثة، سيعيد API خطأ ويجب على التطبيق التبديل إلى فك التشفير البرمجي. عدد الجلسات يعتمد على الشركة المصنعة لـ SoC: رقاقات Apple تسمح بما يصل إلى 4 جلسات فك تشفير H.264 على A17 Pro، بينما يدعم Snapdragon 8 Gen 2 ما يصل إلى 2 لـ H.265 وما يصل إلى 2 لـ VP9 إجمالاً.

الأسئلة الشائعة

كيف أتحقق من استخدام فك التشفير بالأجهزة؟

على iOS، استخدم VTDecompressionSessionCopySupportedPropertyDictionary وتحقق من kVTDecompressionPropertyKey_UsingHardwareAcceleratedVideoDecoder. على Android، استدع MediaCodec.getCodecInfo().isHardwareAccelerated() بعد إنشاء وحدة فك التشفير. إذا كان العلم false، يتم استخدام وحدة فك تشفير برمجية، عادة OMX.google.*.

هل يدعم فك التشفير بالأجهزة المحتوى المحمي بـ DRM؟

نعم، فك التشفير بالأجهزة إلزامي لمحتوى DRM في خدمات البث. FairPlay على iOS وWidevine L1 على Android يتطلبان خط أنابيب محمياً من وحدة فك التشفير إلى إخراج الشاشة، حيث تكون الإطارات المفكوكة غير قابلة للوصول من قبل التطبيق. هذا الخط الأنابيب ممكن فقط مع فك التشفير بالأجهزة الذي يدعم الجلسة الآمنة.

ما هو VDADecoder على iOS؟

VDADecoder (Video Decode Acceleration) هو إطار عمل قديم من iOS 6–8، تم استبداله بـ VideoToolbox. يوفر VideoToolbox API أكثر حداثة ومرونة مع دعم H.265 وHDR وتعدد الخيوط. VDADecoder لا يوصى به للمشاريع الجديدة — استخدم VTDecompressionSession من VideoToolbox.

هل يمكن لوحدة فك التشفير بالأجهزة العمل في الخلفية؟

في معظم الحالات، لا. على iOS، تتطلب وحدة فك التشفير بالأجهزة تطبيقاً نشطاً في المقدمة بسبب قيود استهلاك الطاقة. على Android، ممكن فك التشفير في الخلفية عبر MediaCodec في خدمة، لكن الأداء قد ينخفض. الاستثناء هو وضع PiP، حيث يسمح النظام بفك التشفير بالأجهزة في نافذة عائمة.

أي ترميز لديه أفضل دعم للأجهزة؟

القائد المطلق هو H.264، الذي يتم فك تشفيره بالأجهزة على 100% من الأجهزة المحمولة الحديثة. H.265 مدعوم على حوالي 80% من الأجهزة (iOS 8+، Android 5+ مع SoC مناسب). AV1 هو الأكثر تقييداً: دعم الأجهزة فقط على أجهزة 2023+ مع Snapdragon 8 Gen 2 وExynos 2200 وApple A17 Pro.

الملخص

  • Hardware decoding — فك ضغط الوسائط على وحدات ASIC متخصصة في SoC باستهلاك 0.2–0.5 واط
  • كفاءة الطاقة أعلى 5–10 مرات من فك التشفير البرمجي، مما يوفر 10–15 ساعة من تشغيل الفيديو
  • زمن الاستجابة لفك التشفير بالأجهزة 5–15 مللي ثانية مقابل 30–80 مللي ثانية للبرمجي بفضل بنية خط الأنابيب
  • VideoToolbox على iOS وMediaCodec على Android هما API أصليان لفك التشفير بالأجهزة
  • القيود — دعم التنسيق يعتمد على SoC؛ AV1 يتطلب جهازاً من 2023+
  • فك التشفير بالأجهزة إلزامي لفيديو 4K والمشاهدة المطولة والمحتوى المحمي بـ DRM
  • استخدم فك التشفير بالأجهزة كأساسي مع احتياطي برمجي للتنسيقات غير المدعومة

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا