मीडिया

एंड्रॉइड मीडिया एचएएल आइकन

एंड्रॉइड में स्टेजफ्राइट शामिल है, जो मूल स्तर पर एक मीडिया प्लेबैक इंजन है जिसमें लोकप्रिय मीडिया प्रारूपों के लिए अंतर्निहित सॉफ़्टवेयर-आधारित कोडेक्स हैं।

स्टेजफ्राइट ऑडियो और वीडियो प्लेबैक सुविधाओं में ओपनमैक्स कोडेक्स, सत्र प्रबंधन, समय-सिंक्रनाइज़्ड रेंडरिंग, ट्रांसपोर्ट कंट्रोल और डीआरएम के साथ एकीकरण शामिल है।

स्टेजफ्राइट आपके द्वारा प्रदान किए गए कस्टम हार्डवेयर कोडेक्स के साथ एकीकरण का भी समर्थन करता है। मीडिया को एनकोड और डीकोड करने के लिए एक हार्डवेयर पथ सेट करने के लिए, आपको एक हार्डवेयर-आधारित कोडेक को ओपनमैक्स आईएल (एकीकरण परत) घटक के रूप में लागू करना होगा।

नोट: स्टेजफ्राइट अपडेट एंड्रॉइड मासिक सुरक्षा अद्यतन प्रक्रिया के माध्यम से और एंड्रॉइड ओएस रिलीज के हिस्से के रूप में हो सकता है।

वास्तुकला

मीडिया एप्लिकेशन निम्नलिखित आर्किटेक्चर के अनुसार एंड्रॉइड देशी मल्टीमीडिया फ्रेमवर्क के साथ इंटरैक्ट करते हैं।

एंड्रॉइड मीडिया आर्किटेक्चर

चित्र 1. मीडिया वास्तुकला

अनुप्रयोग ढाँचा
एप्लिकेशन फ्रेमवर्क स्तर पर एप्लिकेशन कोड होता है जो मल्टीमीडिया हार्डवेयर के साथ इंटरैक्ट करने के लिए android.media API का उपयोग करता है।
बाइंडर आईपीसी
बाइंडर आईपीसी प्रॉक्सी प्रक्रिया सीमाओं पर संचार की सुविधा प्रदान करती है। वे frameworks/av/media/libmedia निर्देशिका में स्थित हैं और "I" अक्षर से शुरू होते हैं।
नेटिव मल्टीमीडिया फ्रेमवर्क
मूल स्तर पर, एंड्रॉइड एक मल्टीमीडिया ढांचा प्रदान करता है जो ऑडियो और वीडियो रिकॉर्डिंग और प्लेबैक के लिए स्टेजफ्राइट इंजन का उपयोग करता है। स्टेजफ्राइट समर्थित सॉफ़्टवेयर कोडेक्स की एक डिफ़ॉल्ट सूची के साथ आता है और आप ओपनमैक्स एकीकरण परत मानक का उपयोग करके अपना स्वयं का हार्डवेयर कोडेक लागू कर सकते हैं। अधिक कार्यान्वयन विवरण के लिए, frameworks/av/media में स्थित मीडियाप्लेयर और स्टेजफ्राइट घटक देखें।
ओपनमैक्स एकीकरण परत (आईएल)
ओपनमैक्स आईएल स्टेजफ्राइट को घटकों नामक कस्टम हार्डवेयर-आधारित मल्टीमीडिया कोडेक्स को पहचानने और उपयोग करने के लिए एक मानकीकृत तरीका प्रदान करता है। आपको libstagefrighthw.so नामक साझा लाइब्रेरी के रूप में एक OpenMAX प्लगइन प्रदान करना होगा। यह प्लगइन स्टेजफ्राइट को आपके कस्टम कोडेक घटकों से जोड़ता है, जिसे ओपनमैक्स आईएल घटक मानक के अनुसार लागू किया जाना चाहिए।

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

स्टेजफ्राइट सामान्य मीडिया प्रारूपों के लिए अंतर्निहित सॉफ़्टवेयर कोडेक्स के साथ आता है, लेकिन आप ओपनमैक्स घटकों के रूप में अपने स्वयं के कस्टम हार्डवेयर कोडेक्स भी जोड़ सकते हैं। ऐसा करने के लिए, आपको ओएमएक्स घटक और एक ओएमएक्स प्लगइन बनाना होगा जो आपके कस्टम कोडेक्स को स्टेजफ्राइट फ्रेमवर्क के साथ जोड़ता है। उदाहरण घटकों के लिए, hardware/ti/omap4xxx/domx/ देखें; गैलेक्सी नेक्सस के लिए एक उदाहरण प्लगइन के लिए, hardware/ti/omap4xx/libstagefrighthw देखें।

अपने स्वयं के कोडेक्स जोड़ने के लिए:

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

    अपने डिवाइस के मेकफ़ाइल में, सुनिश्चित करें कि आपने मॉड्यूल को उत्पाद पैकेज के रूप में घोषित किया है:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

कोडेक्स को फ्रेमवर्क में उजागर करें

स्टेजफ्राइट सेवा android.media.MediaCodecList और android.media.CamcorderProfile कक्षाओं के माध्यम से डिवाइस पर समर्थित कोडेक्स और प्रोफाइल को ऐप डेवलपर्स के सामने उजागर करने के लिए system/etc/media_codecs.xml और system/etc/media_profiles.xml पार्स करती है। आपको device/<company>/<device>/ डायरेक्टरी में दोनों फाइलें बनानी होंगी और इसे अपने डिवाइस के मेकफाइल में सिस्टम इमेज के 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 देखें।

नोट: एंड्रॉइड 4.1 के अनुसार, मीडिया कोडेक्स के लिए <Quirk> तत्व अब समर्थित नहीं है।