وحدات الوسائط

يتضمّن الإصدار 10 من نظام التشغيل Android أو الإصدارات الأحدث العديد من مكوّنات الوسائط القابلة للتحديث التي تتيح تحديث مكوّنات إطار العمل من خلال البنية الأساسية لـ "متجر Google Play" أو من خلال آلية تحديث عبر الهواء (OTA) يوفّرها أحد الشركاء. يتم تجميع مكونات الوسائط معًا في وحدات تتيح تقديم تحديثات الأمان وتحديثات الميزات بدون الحاجة إلى تحديث صورة النظام بالكامل.

تتوفّر مكوّنات الوسائط القابلة للتعديل في الوحدات التالية.

لمزيد من التفاصيل حول إضافة أدوات استخراج وفك ترميز مخصّصة، يُرجى الاطّلاع على تخصيص مكونات الوسائط.

أدوات استخراج الوسائط

في الإصدار 9 من نظام التشغيل Android والإصدارات الأقدم، يتم تجميع أدوات الاستخراج في ملف واحد libstagefright.so. في نظام التشغيل Android 10 أو الإصدارات الأحدث، تكون أدوات استخراج الوسائط عبارة عن مكونات منفصلة. يحتوي كل مستخرِج على ملف .so خاص به مع نقطة دخول توفّر دالة sniffer لتحديد ما إذا كان بإمكان المستخرِج التعامل مع ملف الوسائط المحدّد، ودالة factory تنشئ مثيلاً للمستخرِج لملف الوسائط المحدّد. يتم تسمية كل أداة استخراج (للمساعدة في تصحيح الأخطاء) وتحديد إصدارها للإشارة إلى أحدث أداة استخراج.

يحمّل إطار عمل الوسائط تلقائيًا جميع ملفات .so المتاحة، ما يتيح لك إنشاء أدوات استخراج خاصة بك من خلال إضافة ملف .so جديد بدون الحاجة إلى تعديل libstagefright أو مكتبات إطار عمل الوسائط الأخرى. يمكنك أيضًا التأكّد من أنّ أداة الاستخراج المخصّصة لها الأولوية على أداة الاستخراج التي توفّرها Google.

MediaSession2 API

تتيح واجهة برمجة التطبيقات MediaSession2 لتطبيقات الوسائط عرض عناصر التحكّم في النقل ومعلومات التشغيل لعمليات أخرى، مثل إطار عمل Android والتطبيقات الأخرى. لا يمكن تخصيص هذا المكوّن.

MediaParser API

تتيح واجهة برمجة التطبيقات MediaParser API لتطبيق ExoPlayer الاستخدام الفعّال لأدوات تحليل حاويات الوسائط في إطار العمل من أجل استخراج عيّنات الوسائط من حاويات الوسائط. يتضمّن MediaParser التغييرات التالية على حدود رمز المصدر:

  • frameworks/base/apex/media/framework/java/android/media/MediaParser.java. تنفيذ واجهة برمجة التطبيقات والطبقة الرقيقة

  • external/exoplayer/: مصادر Exoplayer الحرفية التي تم إنشاء MediaParser عليها

لا يمكن تخصيص MediaParser API. لاختبار MediaParser، استخدِم الاختبارات في cts/tests/tests/mediaparser/.

برامج ترميز الوسائط

تتضمّن وحدة Media Codecs مكونات Codec2 قابلة للتحديث. يختلف مدى توفّر خيارات التخصيص بين الإصدارات:

  • في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث (تحديدًا الإصدار 292100200 من تحديث نظام Google Play)، يمكنك تخصيص مَعلمات تخصيص ذاكرة ION (راجِع التفاصيل أدناه).

  • في نظام التشغيل Android 9 أو الإصدارات الأقدم، لا يمكن تعديل واجهة برمجة التطبيقات لبرنامج الترميز OMX، ولكن يمكنك استخدامها في قسم المورّد.

تخصيص ذاكرة ION

في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث وتحديث نظام Google Play الإصدار 292100200 أو الإصدارات الأحدث، يمكنك تخصيص المَعلمات التالية لتخصيص الذاكرة في ION.

المَعلمة القيمة التلقائية الوصف
heapMask 0xFFFFFFFF يُسمح بجميع أنواع الذاكرة المؤقتة.
allocFlags 0 لم يتم ضبط أي علامات.
minAlignment 0 لا يوجد محاذاة.

لتجاوز المَعلمات:

  1. تسجيل خدمة android.hardware.media.c2 تلقائية وتقديم مَعلمات مخصّصة لاستخدام ION

  2. أضِف الرمز التالي إلى الجهاز manifest.xml.

    <hal format=">hidl&<quot>;
        nameandroid.hardwar<e.med>ia.c2</name
       > transpo<rthwbinder>/tran<sport
     >   <version1>.0/ve<rsion
       > interfac<e
      >      nameIComp<onent>Store/nam<e
          >  insta<ncedefaul>t/ins<tance
        >/<inte>rface
    /hal
    

التنسيق والاعتماديات

تتوفّر وحدة Media (com.android.media) ووحدة Media Codec (com.android.media.swcodec) بتنسيق APEX. تعتمد مكوّنات الوسائط المضمّنة على واجهات برمجة التطبيقات في NDK فقط.

التحديثات

أثناء التحديث، تحمّل مكوّنات إطار العمل على الجهاز حزمة APEX تحتوي على رمز Java ورموز برمجية أصلية.

مستجدّات الوسائط

الشكل 1: خطوات تعديل مكوّن الوسائط

بعد أن يثبِّت إطار العمل حزمة APEX، تتم إعادة تشغيل الجهاز ويتم تركيب صورة القرص، كما يتم تحميل عمليات نظام الوسائط (media.extractor وmedia.codec) للوحدات المعدَّلة من نقطة التركيب.