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

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

توجد مكونات الوسائط القابلة للتحديث في الوحدات التالية.

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

مستخرجو الوسائط

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

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

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

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

واجهة برمجة تطبيقات MediaParser

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

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

  • external/exoplayer/ . المصادر الحرفية لـ Exoplayer التي تم بناء MediaParser عليها.

لا يمكن تخصيص واجهة برمجة تطبيقات MediaParser. لاختبار MediaParser، استخدم الاختبارات الموجودة في cts/tests/tests/mediaparser/ .

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

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

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

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

تخصيص الذاكرة ايون

في Android 11 أو الإصدارات الأحدث و Google Play System Update v292100200 أو الإصدارات الأحدث، يمكنك تخصيص المعلمات التالية لتخصيص ذاكرة 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 ) ووحدة Media Codec ( com.android.media.swcodec ) بتنسيق APEX . تعتمد مكونات الوسائط المضمنة فقط على واجهات برمجة تطبيقات NDK.

التحديثات

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

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

الشكل 1. تدفق تحديث مكون الوسائط

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