मीडिया

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

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

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

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

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

आर्किटेक्चर

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

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

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

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

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

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

अपने खुद के कोडेक्स जोड़ने के लिए:

  1. अपने घटकों को OpenMAX IL घटक मानक के अनुसार बनाएँ। घटक इंटरफ़ेस frameworks/native/include/media/OpenMAX/OMX_Component.h फ़ाइल में स्थित है। ओपनमैक्स आईएल विनिर्देश के बारे में अधिक जानने के लिए, ओपनमैक्स वेबसाइट देखें।
  2. एक ओपनमैक्स प्लगइन बनाएं जो आपके घटकों को स्टेजफ्राइट सेवा से जोड़ता है। प्लगइन बनाने के लिए इंटरफेस के लिए, frameworks/native/include/media/hardware/OMXPluginBase.h और HardwareAPI.h शीर्षलेख फ़ाइलें देखें।
  3. अपने उत्पाद Makefile में 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

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