اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتضمّن الإصدار 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
لا يتوفّر تطابق.
لتجاوز المَعلمات:
سجِّل خدمة android.hardware.media.c2 تلقائية وقدِّم مَعلمات استخدام مخصّصة لنظام ION.
تكون وحدة الوسائط (com.android.media) ووحدة ترميز الوسائط
(com.android.media.swcodec) بتنسيق APEX. تعتمد مكوّنات الوسائط المضمّنة على واجهات برمجة التطبيقات NDK فقط.
التحديثات
أثناء التحديث، تحمِّل مكوّنات إطار العمل على الجهاز حِزمة APEX
التي تحتوي على رمز Java ورمز أصلي.
الشكل 1: خطوات تعديل مكوّن الوسائط
بعد أن يُثبِّت إطار العمل حزمة APEX، تتم إعادة تشغيل الجهاز وتثبيت
صورة القرص وعمليات نظام الوسائط (media.extractor وmedia.codec) التي تحمِّل
الوحدات المعدَّلة من نقطة التثبيت.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Media modules\n\nAndroid 10 or higher includes several updatable media\ncomponents that enable updating framework components through Google Play Store\ninfrastructure or through a partner-provided over-the-air (OTA) mechanism. Media\ncomponents are packaged together in modules that allows providing security\nupdates and feature updates without requiring a full system image update.\n\nUpdatable media components exist in the following modules.\n\n- **Media.** This module includes [media extractors](#media-extractors),\n [`MediaSession2` APIs](#media-session-api), and [`MediaParser`\n APIs](#media-parser-api).\n\n- **[Media Codecs](#media-codecs).** This module includes updatable software\n Codec2 components.\n\n- **[MediaProvider](/docs/core/media/media-provider).** This module\n optimizes indexed metadata (audio, video, and images from SD cards and USB\n devices) and makes that data available to apps through the [MediaStore public\n APIs](https://developer.android.com/reference/android/provider/MediaStore).\n\nFor details on adding custom extractors and decoders, see [Customizing Media\nComponents](/docs/core/media/updatable-media).\n\nMedia extractors\n----------------\n\nIn Android 9 and lower, extracters are compiled into a single\n`libstagefright.so` file. In Android 10 or higher,\nmedia extractors are separate components. Each extractor has its own `.so` file\nwith an entry point that provides a *sniffer* function to determine whether the\nextractor can handle the given media file, and a *factory* function that creates\nan instance of the extractor for the given media file. Each extractor is named\n(to help in debugging) and versioned to indicate which extractor is the newest.\n\nThe media framework automatically loads all available extractor `.so` files, so\nyou can create your own extractors by adding a new `.so` file without needing to\nmodify `libstagefright` or other media framework libraries. You can also ensure\nthat a custom extractor is preferred over the Google-provided extractor.\n\nMediaSession2 API\n-----------------\n\nThe MediaSession2 API allows media apps to expose their transport controls and\nplayback information to other processes such as the Android framework and other\napps. This component can't be customized.\n\nMediaParser API\n---------------\n\nThe MediaParser API allows ExoPlayer to make efficient use of framework media\ncontainer parsers to extract media samples from media containers. MediaParser\nincludes the following changes to source code boundaries:\n\n- `frameworks/base/apex/media/framework/java/android/media/MediaParser.java`.\n API and thin layer implementation.\n\n- `external/exoplayer/`. Exoplayer verbatim sources on which MediaParser is\n built.\n\nThe MediaParser API can't be customized. To test MediaParser, use the tests in\n`cts/tests/tests/mediaparser/`.\n\nMedia codecs\n------------\n\nThe Media Codecs module includes updatable software Codec2 components. Support\nfor customization differs between releases:\n\n- In Android 11 or higher (specifically [Google Play System Update\n v292100200](https://support.google.com/android/answer/7680439)),\n you can customize the parameters for ION memory allocation (see below for\n details).\n\n- In Android 9 or lower, the OMX codec API isn't updatable, but you can still\n use it in the vendor partition.\n\n### ION memory allocation\n\nIn Android 11 or higher and [Google Play System Update\nv292100200](https://support.google.com/android/answer/7680439) or\nhigher, you can customize the following parameters for ION memory allocation.\n\n| Parameter | Default value | Description |\n|----------------|---------------|-------------------------|\n| `heapMask` | `0xFFFFFFFF` | All heap types allowed. |\n| `allocFlags` | `0` | No flags set. |\n| `minAlignment` | `0` | No alignment. |\n\nTo override the parameters:\n\n1. Register a default `android.hardware.media.c2` service and provide custom ION\n usage parameters.\n\n - To create a new service, copy the\n [frameworks/av/media/codec2/hidl/services/vendor.cpp](https://android.googlesource.com/platform/frameworks/av/+/refs/heads/android16-release/media/codec2/hidl/services/vendor.cpp)\n file to your repository then modify `StoreImpl::Interface::SetIonUsage()`\n as needed.\n\n - To reuse the (OMX) `media.codec` process, copy and register the `StoreImpl`\n class from\n [frameworks/av/media/codec2/hidl/services/vendor.cpp](https://android.googlesource.com/platform/frameworks/av/+/refs/heads/android16-release/media/codec2/hidl/services/vendor.cpp)\n to the existing `mediacodec` file\n ([frameworks/av/services/mediacodec/main_codecservice.cpp](https://android.googlesource.com/platform/frameworks/av/+/refs/heads/android16-release/services/mediacodec/main_codecservice.cpp)).\n\n | **Note:** If the device already has default `android.hardware.media.c2` service for vendor codecs, that service is automatically used (you don't need to register a new one).\n2. Add the following code to the device `manifest.xml`.\n\n \u003chal format=\"hidl\"\u003e\n \u003cname\u003eandroid.hardware.media.c2\u003c/name\u003e\n \u003ctransport\u003ehwbinder\u003c/transport\u003e\n \u003cversion\u003e1.0\u003c/version\u003e\n \u003cinterface\u003e\n \u003cname\u003eIComponentStore\u003c/name\u003e\n \u003cinstance\u003edefault\u003c/instance\u003e\n \u003c/interface\u003e\n \u003c/hal\u003e\n\nFormat and dependences\n----------------------\n\nThe Media module (`com.android.media`) and Media Codec module\n(`com.android.media.swcodec`) are in [APEX](/docs/core/ota/apex)\nformat. Included media components rely only on NDK APIs.\n\nUpdates\n-------\n\nDuring an update, the framework components on the device load an APEX package\nthat contains Java and native code.\n\n**Figure 1.** The media component update flow\n\nAfter the framework installs the APEX package, the device reboots and mounts the\ndisk image and media system processes (`media.extractor` and `media.codec`) load\nthe updated modules from the mount point."]]