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

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

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

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

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

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

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

واجهة برمجة التطبيقات MediaSession2 API

تسمح واجهة برمجة التطبيقات MediaSession2 API لتطبيقات الوسائط بعرض عناصر التحكّم في النقل ومعلومات التشغيل لعمليات أخرى، مثل إطار عمل 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/.

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

تتضمّن وحدة برامج ترميز الوسائط مكونات برنامج Codec2 القابلة للتحديث. يختلف مدى توفّر ميزة التخصيص بين الإصدارات:

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

  • في الإصدار 9 من Android أو الإصدارات الأقدم، لا يمكن تحديث واجهة برمجة التطبيقات OMX codec API، ولكن لا يزال بإمكانك استخدامها في قسم المورّد.

تخصيص ذاكرة 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">
        <name>android.hardware.media.c2</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IComponentStore</name>
            <instance>default</instance>
        </interface>
    </hal>
    

التنسيق والتبعيات

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

التحديثات

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

تعديلات الوسائط

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

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