मीडिया

Android Media HAL का आइकॉन

Android में Stagefright शामिल है. यह नेटिव लेवल पर मीडिया चलाने वाला एक इंजन है. इसमें लोकप्रिय मीडिया फ़ॉर्मैट के लिए, सॉफ़्टवेयर पर आधारित कोडेक पहले से मौजूद होते हैं.

Stagefright की ऑडियो और वीडियो चलाने की सुविधाओं में, OpenMAX कोडेक के साथ इंटिग्रेशन, सेशन मैनेजमेंट, समय के हिसाब से सिंक की गई रेंडरिंग, ट्रांसपोर्ट कंट्रोल, और डीआरएम शामिल हैं.

Stagefright, आपके दिए गए कस्टम हार्डवेयर कोडेक के साथ भी काम करता है. मीडिया को कोड में बदलने और डिकोड करने के लिए हार्डवेयर पाथ सेट करने के लिए, आपको OpenMax IL (इंटिग्रेशन लेयर) कॉम्पोनेंट के तौर पर, हार्डवेयर पर आधारित कोडेक लागू करना होगा.

ध्यान दें: Stagefright के अपडेट, Android के हर महीने होने वाले सुरक्षा अपडेट की प्रोसेस के ज़रिए और Android OS रिलीज़ के हिस्से के तौर पर हो सकते हैं.

भवन निर्माण

मीडिया ऐप्लिकेशन, यहां दिए गए आर्किटेक्चर के मुताबिक Android के नेटिव मल्टीमीडिया फ़्रेमवर्क के साथ इंटरैक्ट करते हैं.

Android मीडिया आर्किटेक्चर

पहली इमेज. मीडिया के स्ट्रक्चर

ऐप्लिकेशन फ़्रेमवर्क
ऐप्लिकेशन फ़्रेमवर्क लेवल पर, ऐप्लिकेशन कोड होता है. यह मल्टीमीडिया हार्डवेयर के साथ इंटरैक्ट करने के लिए, android.media एपीआई का इस्तेमाल करता है.
Binder IPC
Binder IPC प्रॉक्सी, प्रोसेस की सीमाओं के बीच कम्यूनिकेशन को आसान बनाते हैं. ये frameworks/av/media/libmedia डायरेक्ट्री में मौजूद होते हैं और "I" अक्षर से शुरू होते हैं.
नेटिव मल्टीमीडिया फ़्रेमवर्क
Android, नेटिव लेवल पर एक मल्टीमीडिया फ़्रेमवर्क उपलब्ध कराता है. यह फ़्रेमवर्क, ऑडियो और वीडियो रिकॉर्डिंग और चलाने के लिए, Stagefright इंजन का इस्तेमाल करता है. Stagefright में, काम करने वाले सॉफ़्टवेयर कोडेक की डिफ़ॉल्ट सूची होती है. साथ ही, OpenMax इंटिग्रेशन लेयर स्टैंडर्ड का इस्तेमाल करके, अपना हार्डवेयर कोडेक लागू किया जा सकता है. लागू करने के बारे में ज़्यादा जानकारी के लिए, frameworks/av/media में मौजूद MediaPlayer और Stagefright कॉम्पोनेंट देखें.
OpenMAX इंटिग्रेशन लेयर (IL)
OpenMAX IL, Stagefright को कस्टम हार्डवेयर पर आधारित मल्टीमीडिया कोडेक की पहचान करने और उनका इस्तेमाल करने का एक स्टैंडर्ड तरीका उपलब्ध कराता है. इन कोडेक को कॉम्पोनेंट कहा जाता है. आपको libstagefrighthw.so नाम की शेयर की गई लाइब्रेरी के तौर पर, OpenMAX प्लग इन देना होगा. यह प्लग इन, Stagefright को आपके पसंद के कोडेक कॉम्पोनेंट से लिंक करता है. इन्हें OpenMAX IL कॉम्पोनेंट स्टैंडर्ड के मुताबिक लागू किया जाना चाहिए.

कस्टम कोडेक लागू करना

Stagefright में, सामान्य मीडिया फ़ॉर्मैट के लिए पहले से मौजूद सॉफ़्टवेयर कोडेक होते हैं. हालांकि, आपके पास OpenMAX कॉम्पोनेंट के तौर पर, अपने कस्टम हार्डवेयर कोडेक जोड़ने का विकल्प भी होता है. ऐसा करने के लिए, आपको OMX कॉम्पोनेंट और OMX प्लगिन बनाना होगा. यह प्लगिन, आपके कस्टम कोडेक को Stagefright फ़्रेमवर्क से जोड़ता है. कॉम्पोनेंट के उदाहरण के लिए, hardware/ti/omap4xxx/domx/ देखें. Galaxy Nexus के लिए प्लग इन का उदाहरण देखने के लिए, hardware/ti/omap4xx/libstagefrighthw देखें.

अपने कोडेक जोड़ने के लिए:

  1. OpenMAX IL कॉम्पोनेंट स्टैंडर्ड के हिसाब से अपने कॉम्पोनेंट बनाएं. कॉम्पोनेंट इंटरफ़ेस, frameworks/native/include/media/OpenMAX/OMX_Component.h फ़ाइल में मौजूद होता है. OpenMAX IL स्पेसिफ़िकेशन के बारे में ज़्यादा जानने के लिए, OpenMAX की वेबसाइट पर जाएं.
  2. OpenMAX प्लग इन बनाएं, जो आपके कॉम्पोनेंट को Stagefright सेवा से लिंक करता हो. प्लग इन बनाने के इंटरफ़ेस के लिए, frameworks/native/include/media/hardware/OMXPluginBase.h और HardwareAPI.h हेडर फ़ाइलें देखें.
  3. अपने प्रॉडक्ट के Makefile में, अपने प्लग इन को शेयर की गई लाइब्रेरी के तौर पर बनाएं और उसका नाम libstagefrighthw.so रखें. उदाहरण के लिए:
    LOCAL_MODULE := libstagefrighthw
    

    अपने डिवाइस के Makefile में, पक्का करें कि आपने मॉड्यूल को प्रॉडक्ट के पैकेज के तौर पर दिखाया हो:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

फ़्रेमवर्क को कोडेक दिखाना

Stagefright सेवा, system/etc/media_codecs.xml और system/etc/media_profiles.xml को पार्स करती है, ताकि android.media.MediaCodecList और android.media.CamcorderProfile क्लास की मदद से, ऐप्लिकेशन डेवलपर को डिवाइस पर काम करने वाले कोडेक और प्रोफ़ाइलों के बारे में जानकारी दी जा सके. आपको दोनों फ़ाइलें device/<company>/<device>/ डायरेक्ट्री में बनानी होंगी और इन्हें अपने डिवाइस की Makefile में, सिस्टम इमेज की system/etc डायरेक्ट्री में कॉपी करना होगा. उदाहरण के लिए:

PRODUCT_COPY_FILES += \
  device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
  device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \

पूरी जानकारी वाले उदाहरणों के लिए, device/samsung/tuna/media_codecs.xml और device/samsung/tuna/media_profiles.xml देखें .

ध्यान दें: Android 4.1 के बाद, मीडिया कोडेक के लिए <Quirk> एलिमेंट का इस्तेमाल नहीं किया जा सकता.