इस सुविधा के साथ काम करने वाली मीडिया ट्रांसकोडिंग

इस सुविधा के साथ काम करने वाले मीडिया ट्रांसकोडिंग की सुविधा, Android 12 में पेश की गई है. डिवाइस, एक ऐसी सुविधा है जिससे डिवाइस में ज़्यादा आधुनिक और स्टोरेज की कम खपत करने वाला मीडिया इस्तेमाल किया जा सकता है वीडियो कैप्चर करने के लिए फ़ॉर्मैट, जैसे कि HEVC. साथ ही, ये वीडियो के साथ काम करते हुए दिखाई देता है. इस सुविधा की मदद से, डिवाइस बनाने वाली कंपनियां, एवीसी की जगह एचईवीसी का इस्तेमाल कर सकती हैं डिफ़ॉल्ट तौर पर, यह वीडियो क्वालिटी को बेहतर बनाता है. इससे डिवाइस का स्टोरेज और बैंडविथ कम हो जाता है ज़रूरतें. जिन डिवाइसों पर साथ में काम करने वाली मीडिया ट्रांसकोडिंग की सुविधा चालू है, Android यह काम कर सकता है में रिकॉर्ड किए गए वीडियो (एक मिनट तक की अवधि वाले) को अपने आप रूपांतरित करें HEVC या एचडीआर जैसे फ़ॉर्मैट में वीडियो बनाने के लिए, वीडियो को किसी ऐसे ऐप्लिकेशन से खोला जाता है जो इस फ़ॉर्मैट पर काम नहीं करता. इससे ऐप्लिकेशन को ये काम करने में मदद मिलती है तब भी काम करता है, जब वीडियो डिवाइस पर नए फ़ॉर्मैट में कैप्चर किए गए हों.

इसके साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा डिफ़ॉल्ट रूप से बंद रहती है. मीडिया चलाने का अनुरोध करने के लिए ट्रांसकोडिंग के लिए, ऐप्लिकेशन को मीडिया की अपनी क्षमताओं के बारे में बताना होगा. अगर आपको ज़्यादा जानकारी चाहिए, तो मीडिया क्षमताओं के बारे में बताते हुए, इस सुविधा के साथ काम करने वाली मीडिया ट्रांसकोडिंग के बारे में ज़्यादा जानकारी मिल सकती है.

यह कैसे काम करता है

साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा के दो मुख्य हिस्से हैं:

  • मीडिया फ़्रेमवर्क में ट्रांसकोडिंग सेवाएं: ये सेवाएं हार्डवेयर का इस्तेमाल करके, फ़ाइल होने में लगने वाले समय को कम करने के लिए, फ़ाइलों को एक फ़ॉर्मैट से दूसरे फ़ॉर्मैट में बदलें और अच्छी क्वालिटी वाले कन्वर्ज़न. इसमें ट्रांसकोडिंग एपीआई, ट्रांसकोडिंग सेवा, कस्टम फ़िल्टर, और हार्डवेयर के लिए एक OEM प्लगिन है. इसके लिए ज़्यादा जानकारी के लिए, स्ट्रक्चर की खास जानकारी देखें.
  • मीडिया कंपनियों में इस सुविधा के साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा: यह मीडिया प्रोवाइडर में मिला कॉम्पोनेंट, मीडिया फ़ाइलें ऐक्सेस करने वाले ऐप्लिकेशन को बीच में रोकता है और ऐप्लिकेशन की क्षमताओं का एलान किया गया है. अगर कोई ऐप्लिकेशन मीडिया फ़ाइल के फ़ॉर्मैट की सुविधा देता है, तो नहीं खास हैंडलिंग की ज़रूरत होती है. अगर कोई ऐप्लिकेशन इस फ़ॉर्मैट में काम नहीं करता, तो फ़्रेमवर्क फ़ाइल को पुराने फ़ॉर्मैट में बदल देता है, जैसे कि एवीसी. ऐसा तब होता है, जब ऐप्लिकेशन फ़ाइल को ऐक्सेस करता है.

पहली इमेज में, मीडिया ट्रांसकोडिंग की प्रोसेस की खास जानकारी दिखाई गई है.

साथ काम करने वाली मीडिया ट्रांसकोडिंग प्रोसेस

पहला डायग्राम. साथ काम करने वाले मीडिया ट्रांसकोडिंग की खास जानकारी.

पेज पर काम करने वाले फ़ॉर्मैट

इस फ़ॉर्मैट के साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा कन्वर्ज़न:

  • एचईवीसी (8-बिट) से एवीसी: कोडेक कन्वर्ज़न इनके ज़रिए किए जाते हैं एक मीडियाकोडर डिकोडर और एक मीडियाकोड एन्कोडर कनेक्ट करता है.
  • HDR10+ (10-बिट) से एवीसी (एसडीआर): एचडीआर से एसडीआर में बदलाव किए जाते हैं Mediacodec इंस्टेंस और डिकोडर में वेंडर प्लगिन हुक का इस्तेमाल करके इंस्टेंस. ज़्यादा जानकारी के लिए, एचडीआर से एसडीआर कोड में बदलने का तरीका देखें.

कॉन्टेंट के वे सोर्स जिन्हें इस्तेमाल किया जा सकता है

इस सुविधा के साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा, डिवाइस पर मौजूद मीडिया से जनरेट किए गए मीडिया पर काम करती है स्थानीय OEM कैमरा ऐप्लिकेशन के ज़रिए अपलोड किया गया है, जो इसमें DCIM/Camera/ फ़ोल्डर में सेव है मुख्य बाहरी वॉल्यूम. यह सुविधा, दूसरे स्टोरेज में मौजूद मीडिया के साथ काम नहीं करती. डिवाइस को ईमेल या एसडी कार्ड से भेजा गया कॉन्टेंट इस्तेमाल नहीं किया जा सकता.

ऐप्लिकेशन अलग-अलग फ़ाइल पाथ के आधार पर, फ़ाइलें ऐक्सेस करते हैं. नीचे दी गई बातों से पता चलता है कि ऐसे फ़ाइल पाथ जिनमें ट्रांसकोडिंग चालू है या इसे बायपास किया गया है:

  • ट्रांसकोडिंग की सुविधा चालू है:

    • MediaStore API के ज़रिए ऐप्लिकेशन का ऐक्सेस
    • Java और नेटिव कोड के साथ-साथ, डायरेक्ट फ़ाइल पाथ एपीआई से ऐप्लिकेशन का ऐक्सेस
    • स्टोरेज ऐक्सेस फ़्रेमवर्क (SAF) के ज़रिए ऐप्लिकेशन का ऐक्सेस
    • ओएस शेयर शीट इंटेंट के ज़रिए ऐप्लिकेशन को ऐक्सेस करने की सुविधा. (सिर्फ़ MediaStore यूआरआई)
    • फ़ोन से पीसी पर MTP/PTP फ़ाइल ट्रांसफ़र
  • ट्रांसकोडिंग को बायपास किया गया:

    • एसडी कार्ड को निकालकर, डिवाइस से फ़ाइल ट्रांसफ़र करना
    • इन विकल्पों का इस्तेमाल करके, फ़ाइल को डिवाइस से डिवाइस पर ट्रांसफ़र करना आस-पास शेयर करने या ब्लूटूथ से ट्रांसफ़र करने की सुविधा.

ट्रांसकोडिंग के लिए, पसंद के मुताबिक फ़ाइल पाथ जोड़ें

डिवाइस बनाने वाली कंपनियां इसके तहत मीडिया ट्रांसकोडिंग के लिए वैकल्पिक रूप से फ़ाइल पाथ जोड़ सकती हैं DCIM/ डायरेक्ट्री. DCIM/ डायरेक्ट्री के बाहर के सभी पाथ अस्वीकार कर दिए गए हैं. मोबाइल और इंटरनेट सेवा देने वाली कंपनी या स्थानीय कंपनी की शर्तों को पूरा करने के लिए, इस तरह के फ़ाइल पाथ जोड़ने की ज़रूरत पड़ सकती है कानून के हिसाब से सही हैं.

फ़ाइल पाथ जोड़ने के लिए, ट्रांसकोड पाथ का इस्तेमाल करें रनटाइम रिसॉर्स ओवरले (आरआरओ), config_supported_transcoding_relative_paths. यह एक उदाहरण है फ़ाइल पाथ जोड़ने का तरीका:

<string-array name="config_supported_transcoding_relative_paths" translatable="false">
    <item>DCIM/JCF/</item>
</string-array>

कॉन्फ़िगर किए गए फ़ाइल पाथ की पुष्टि करने के लिए, इनका इस्तेमाल करें:

adb shell dumpsys activity provider com.google.android.providers.media.module/com.android.providers.media.MediaProvider | head -n 20

आर्किटेक्चर की खास जानकारी

इस सेक्शन में मीडिया ट्रांसकोडिंग सुविधा के आर्किटेक्चर के बारे में बताया गया है.

मीडिया-ट्रांसकोडिंग-आर्किटेक्चर

दूसरा डायग्राम. मीडिया ट्रांसकोडिंग आर्किटेक्चर.

मीडिया ट्रांसकोडिंग आर्किटेक्चर में ये कॉम्पोनेंट शामिल होते हैं:

  • MediaTranscodingManager सिस्टम एपीआई: ऐसा इंटरफ़ेस जो MediaTranscoding सेवा से संपर्क करने के लिए क्लाइंट का इस्तेमाल किया जा सकता है. कॉन्टेंट बनाने MediaProvider मॉड्यूल इस एपीआई का इस्तेमाल करता है.
  • MediaTranscodingService: क्लाइंट को मैनेज करने वाली नेटिव सेवा कनेक्शन, ट्रांसकोडिंग के अनुरोध शेड्यूल करता है, और हिसाब-किताब रखने का काम करता है TranscodingSessions.
  • MediaTranscoder: ट्रांसकोडिंग करने वाली नेटिव लाइब्रेरी. यह लाइब्रेरी को एनडीके (NDK) मीडिया फ़्रेमवर्क के आधार पर बनाया गया है, ताकि मॉड्यूल के साथ काम करते हैं.

साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा, दोनों में ट्रांसकोडिंग मेट्रिक लॉग करती है मीडिया ट्रांसकोडर शामिल हैं. क्लाइंट साइड और सेवा साइड कोड का इस्तेमाल करें.

फ़ाइल का ऐक्सेस

साथ काम करने वाली मीडिया ट्रांसकोडिंग, इसके ऊपर बनी है यूज़रस्पेस (FUSE) फ़ाइलसिस्टम में फ़ाइल सिस्टम, इसका इस्तेमाल स्कोप वाले स्टोरेज के लिए किया जाता है. FUSE, MediaProvider मॉड्यूल को इन कामों के लिए चालू करता है उपयोगकर्ता स्पेस में फ़ाइल की कार्रवाइयों की जांच करता है और ऐक्सेस देने, अस्वीकार करने या छिपाने के लिए उसमें बदलाव करने की नीति.

जब कोई ऐप्लिकेशन किसी फ़ाइल को ऐक्सेस करने की कोशिश करता है, तो FUSE डीमन फ़ाइल को ऐक्सेस करने की कोशिश करता है को ऐप से ऐक्सेस किया जा सकता है. अगर ऐप्लिकेशन नए फ़ॉर्मैट (जैसे कि HEVC) पर काम करता है, तो ओरिजनल फ़ाइल दिखती है. अगर ऐप्लिकेशन इस फ़ॉर्मैट पर काम नहीं करता, तो फ़ाइल पुराने प्रारूप (जैसे कि एवीसी) में ट्रांसकोड किया जाता है या फिर कैश मेमोरी से वापस भेजा जाता है यदि ट्रांसकोड किया गया वर्शन उपलब्ध है.

ट्रांसकोड की गई फ़ाइलों का अनुरोध करें

इस सुविधा के साथ काम करने वाली मीडिया ट्रांसकोडिंग की सुविधा डिफ़ॉल्ट रूप से बंद रहती है. इसका मतलब है कि अगर इस डिवाइस में HEVC फ़ॉर्मैट में फ़ाइलें भी काम करती हैं. Android, फ़ाइलों को तब तक ट्रांसकोड नहीं करता, जब तक कि ऐप्लिकेशन को किसी मेनिफ़ेस्ट फ़ाइल में या हर हाल में एन्कोड किए जाने वाले कोड की सूची.

ऐप्लिकेशन इन विकल्पों का इस्तेमाल करके, ट्रांसकोड की गई एसेट के लिए अनुरोध कर सकते हैं:

  • मेनिफ़ेस्ट फ़ाइल में, इस्तेमाल न किए जा सकने वाले फ़ॉर्मैट के बारे में बताएं. जानकारी के लिए, यह देखें संसाधन में सुविधाओं के बारे में बताना और कोड में क्षमताओं के बारे में बताएं.
  • ऐप्लिकेशन को इसमें जोड़ें हर हाल में एन्कोड किए गए कोड की सूची जिसे MediaProvider में शामिल किया गया हो मॉड्यूल का इस्तेमाल नहीं किया जाएगा. इससे अपडेट नहीं हुए ऐप्लिकेशन के लिए ट्रांसकोडिंग चालू होती है मेनिफ़ेस्ट फ़ाइल में कॉपी की जा सकती है. जब कोई ऐप्लिकेशन, काम न करने वाली मेनिफ़ेस्ट फ़ाइल को अपडेट करता है फ़ॉर्मैट के बिना, इसे फ़ोर्स ट्रांसकोड सूची से निकाला जाना चाहिए. डिवाइस डिवाइस बनाने वाली कंपनियां, अपने ऐप्लिकेशन को इस नीति में जोड़ने या हटाने के लिए नॉमिनेट कर सकती हैं इसके हिसाब से ट्रांसकोड सूची पैच सबमिट करना या गड़बड़ी की शिकायत करना. Android टीम समय-समय पर सूची की समीक्षा करती है और उस सूची से ऐप्लिकेशन हटा सकती है.
  • ऐप्लिकेशन के साथ काम करने वाले फ़्रेमवर्क के साथ काम करने वाले फ़ॉर्मैट बंद करें समय (उपयोगकर्ता इसे सेटिंग में हर ऐप्लिकेशन के लिए बंद भी कर सकते हैं).
  • काम न करने वाली सेटिंग के बारे में साफ़ तौर पर बताते हुए, MediaStore का इस्तेमाल करके कोई फ़ाइल खोलें फ़ॉर्मैट के साथ openTypedAssetFileDescriptor एपीआई.

यूएसबी ट्रांसफ़र (डिवाइस से पीसी पर) के लिए, ट्रांसकोडिंग डिफ़ॉल्ट रूप से बंद रहती है, लेकिन उपयोगकर्ताओं के लिए वीडियो को एवीसी में बदलें टॉगल का इस्तेमाल करके, ट्रांसकोडिंग चालू करने का विकल्प चुना जा सकता है जैसा कि इमेज 3 में दिखाया गया है, यूएसबी की प्राथमिकताएं सेटिंग स्क्रीन पर जाएं.

मीडिया ट्रांसकोडिंग चालू करने के लिए टॉगल करें

तीसरी इमेज. यूएसबी की सेटिंग वाले फ़ोल्डर में मीडिया ट्रांसकोडिंग चालू करने के लिए टॉगल करें स्क्रीन.

ट्रांसकोड की गई फ़ाइलों के अनुरोध पर पाबंदियां

अगर ट्रांसकोडिंग के अनुरोध को, लंबे समय के लिए सिस्टम के रिसॉर्स को लॉक करने से रोकना है, तो अवधि, ट्रांसकोडिंग सेशन का अनुरोध करने वाले ऐप्लिकेशन इन तक सीमित हैं:

  • लगातार 10 सेशन
  • चलने का कुल समय तीन मिनट है

अगर कोई ऐप्लिकेशन इन सभी पाबंदियों को पार कर जाता है, तो फ़्रेमवर्क ओरिजनल फ़ाइल डिस्क्रिप्टर शामिल है.

डिवाइस की ज़रूरी शर्तें

डिवाइस के साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा काम करे, इसके लिए ज़रूरी है कि डिवाइस ये ज़रूरी शर्तें:

  • डिवाइस में मूल कैमरा ऐप्लिकेशन के लिए, एचईवीसी एन्कोडिंग डिफ़ॉल्ट रूप से चालू है
  • डिवाइस में एचडीआर से एसडीआर ट्रांसकोडिंग की सुविधा काम करती है. डिवाइस पर एचडीआर क्वालिटी में वीडियो चलाने की सुविधा काम करती है फ़ोटो लेना

डिवाइस पर मीडिया ट्रांसकोडिंग, वीडियो हार्डवेयर, और स्टोरेज की परफ़ॉर्मेंस अच्छी हो पढ़ने/लिखने के ऐक्सेस की परफ़ॉर्मेंस ऑप्टिमाइज़ होनी चाहिए. जब मीडिया कोडेक 1 की प्राथमिकता के साथ कॉन्फ़िगर किया गया है, तो कोडेक सबसे ज़्यादा की संभावना ज़्यादा होती है. हमारा सुझाव है कि ट्रांसकोडिंग की परफ़ॉर्मेंस से कम से कम 200 एफ़पीएस (फ़्रेम प्रति सेकंड) हो. अपने हार्डवेयर की परफ़ॉर्मेंस की जांच करने के लिए, मीडिया ट्रांसकोडर चलाएं मानक कीमत frameworks/av/media/libmediatranscoding/transcoder/benchmark है.

पुष्टि करें

साथ काम करने वाली मीडिया ट्रांसकोडिंग सुविधा की पुष्टि करने के लिए, नीचे दिया गया सीटीएस चलाएं परीक्षण:

  • android.media.mediatranscoding.cts
  • android.mediaprovidertranscode.cts

दुनिया भर में मीडिया ट्रांसकोडिंग चालू करें

मीडिया ट्रांसकोडिंग फ़्रेमवर्क या ट्रांसकोडिंग के साथ ऐप्लिकेशन के काम करने के तरीके की जांच करने के लिए, आपको दुनिया भर में इस सुविधा के साथ काम करने वाली मीडिया ट्रांसकोडिंग की सुविधा को चालू या बंद कर सकता है. इस सेटिंग > सिस्टम > डेवलपर > मीडिया ट्रांसकोडिंग डेवलपर के लिए विकल्प पेज, ट्रांसकोडिंग की डिफ़ॉल्ट सेटिंग बदलें चालू पर टॉगल करें और फिर ट्रांसकोडिंग चालू करें टॉगल को चालू पर सेट करें या बंद है. अगर यह सेटिंग चालू है, तो मीडिया ट्रांसकोडिंग इस बैकग्राउंड में लागू किया जा सकता है.

ट्रांसकोडिंग का स्टेटस देखें

जांच के दौरान, ट्रांसकोडिंग की जांच करने के लिए, नीचे दिए गए ADB शेल कमांड का इस्तेमाल किया जा सकता है इस स्थिति में, ट्रांसकोडिंग के मौजूदा और पिछले सेशन शामिल हैं:

adb shell dumpsys media.transcoding

वीडियो की लंबाई की सीमा बढ़ाएं

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

adb shell device_config put storage_native_boot transcode_max_duration_ms <LARGE_NUMBER_IN_MS>

एओएसपी सोर्स और रेफ़रंस

यहां दिए गए AOSP सोर्स कोड, YouTube के साथ काम करने वाले मीडिया ट्रांसकोडिंग से जुड़े हैं.

एचडीआर से एसडीआर में कोड में बदलने का तरीका

एचडीआर से एसडीआर एन्कोडिंग के लिए, डिवाइस बनाने वाली कंपनियां एओएसपी सैंपल का इस्तेमाल कर सकती हैं कोडेक 2.0 फ़िल्टर प्लगिन मौजूद है /platform/frameworks/av/media/codec2/hidl/plugin/. इस सेक्शन में बताया गया है कि फ़िल्टर प्लगिन कैसे काम करता है और प्लगिन को कैसे लागू किया जाता है प्लगिन की जांच करने का तरीका जानें.

अगर किसी डिवाइस में ऐसा प्लगिन मौजूद नहीं है जो एचडीआर से एसडीआर में बदलने की सुविधा के साथ काम करता है, तो एचडीआर वीडियो ऐक्सेस करने वाले ऐप्लिकेशन को ओरिजनल फ़ाइल डिस्क्रिप्टर मिलता है, भले ही वह मेनिफ़ेस्ट में बताए गए ऐप्लिकेशन की मीडिया क्षमताओं के बारे में बताता है.

यह कैसे काम करता है

इस सेक्शन में, कोडेक 2.0 फ़िल्टर प्लगिन के सामान्य व्यवहार के बारे में बताया गया है.

बैकग्राउंड

Android, एक-दूसरे के बीच एक एडैप्शन लेयर लागू करने की सुविधा देता है कोडेक 2.0 और android.hardware.media.c2 HAL इंटरफ़ेस android::hardware::media::c2. फ़िल्टर प्लगिन के लिए, AOSP में एक रैपर शामिल होता है एक ऐसा तरीका है जो फ़िल्टर प्लगिन के साथ डिकोडर को एक साथ रैप करता है. MediaCodec रैप किए गए इन कॉम्पोनेंट को, फ़िल्टर करने की सुविधाओं के साथ डिकोडर के तौर पर पहचानता है.

खास जानकारी

FilterWrapper क्लास, वेंडर कोडेक और सामान लौटाती है रैप किए गए कोडेक, media.c2 के हिसाब से बदलाव की लेयर में वापस आ जाते हैं. FilterWrapper क्लास, FilterWrapper::Plugin एपीआई के ज़रिए libc2filterplugin.so को लोड करती है और प्लगिन के लिए उपलब्ध फ़िल्टर रिकॉर्ड करता है. बनाए जाने पर, FilterWrapper सभी उपलब्ध फ़िल्टर को इंस्टैंशिएट करता है. सिर्फ़ बफ़र में बदलाव करने वाले फ़िल्टर हैं शुरू से आखिर में लिया गया है.

फ़िल्टर प्लगिन आर्किटेक्चर

पहला डायग्राम. फ़िल्टर प्लगिन आर्किटेक्चर.

फ़िल्टर प्लगिन इंटरफ़ेस

कॉन्टेंट बनाने FilterPlugin.h इंटरफ़ेस में फ़िल्टर दिखाने के लिए, इन एपीआई के बारे में जानकारी दी गई है:

  • std::shared_ptr<C2ComponentStore>getComponentStore()

    C2ComponentStore ऑब्जेक्ट दिखाता है, जिसमें फ़िल्टर होते हैं. यह अलग है से पता चलता है कि वेंडर के कोडेक 2.0 को लागू करने के बाद क्या होता है. आम तौर पर, यह store में सिर्फ़ वही फ़िल्टर शामिल हैं जिनका इस्तेमाल FilterWrapper क्लास के लिए किया गया है.

  • bool describe(C2String name, Descriptor *desc)

    यहां उपलब्ध विकल्पों के अलावा, फ़िल्टर की जानकारी भी दी जाती है C2ComponentStore. नीचे दिए गए ब्यौरे के बारे में बताया गया है:

    • controlParam: ऐसे पैरामीटर जो फ़िल्टर के काम करने के तरीके को कंट्रोल करते हैं. उदाहरण के लिए, एचडीआर से एसडीआर टोन-मैपर के लिए, कंट्रोल पैरामीटर टारगेट ट्रांसफ़र फ़ंक्शन.
    • affectedParams: वे पैरामीटर जिन पर फ़िल्टर करने की सुविधा का असर पड़ता है कार्रवाइयां. उदाहरण के लिए, एचडीआर से एसडीआर टोन-मैपर के लिए, पैरामीटर, रंग के पहलू हैं.
  • bool isFilteringEnabled(const std::shared_ptr<C2ComponentInterface> &intf)

    अगर फ़िल्टर कॉम्पोनेंट बफ़र में बदलाव करता है, तो true दिखाता है. उदाहरण के लिए, अगर टारगेट ट्रांसफ़र फ़ंक्शन SDR है, तो टोन-मैपिंग फ़िल्टर true दिखाता है और इनपुट ट्रांसफ़र फ़ंक्शन एचडीआर (HLG या PQ) है.

LookWrapper की जानकारी

इस सेक्शन में, FilterWrapper क्लास की जानकारी दी गई है.

क्रिएशन

रैप किया गया कॉम्पोनेंट, मौजूदा डिकोडर को इंस्टैंशिएट करता है और फ़िल्टर सेट अप करना.

क्वेरी और कॉन्फ़िगरेशन

रैप किया गया कॉम्पोनेंट, आने वाले पैरामीटर को क्वेरी से अलग करता है या कॉन्फ़िगरेशन अनुरोधों को फ़िल्टर विवरण के अनुसार कॉन्फ़िगर करें. उदाहरण के लिए, फ़िल्टर कंट्रोल पैरामीटर का कॉन्फ़िगरेशन, फ़िल्टर और फ़िल्टर के जिन पैरामीटर पर असर हुआ है वे क्वेरी में मौजूद होते हैं (ऐसे डिकोडर से पढ़ने के बजाय जिनके पैरामीटर पर असर नहीं पड़ा है).

क्वेरी और कॉन्फ़िगरेशन

दूसरा डायग्राम. क्वेरी और कॉन्फ़िगरेशन.

शुरू करें

शुरुआत में, रैप किया गया कॉम्पोनेंट डिकोडर और ऐसे सभी फ़िल्टर शुरू करता है जो बफ़र में बदलाव करना. अगर कोई फ़िल्टर सक्षम नहीं है, तो रैप किया गया कॉम्पोनेंट, डिकोडर और पास-थ्रू बफ़र को शुरू करता है और डीकोडर का काम करता है.

बफ़र हैंडलिंग

बफ़र हैंडलिंग

तीसरी इमेज. बफ़र हैंडलिंग.

रैप किए गए डिकोडर की सूची में जोड़े गए बफ़र, मूल डिकोडर में जाते हैं. रैप किया गया कॉम्पोनेंट, onWorkDone_nb() के ज़रिए डिकोडर से आउटपुट बफ़र को इकट्ठा करता है कॉलबैक करता है और फिर उसे फ़िल्टर में डाल देता है. अंतिम आउटपुट बफ़र, आखिरी फ़िल्टर की जानकारी क्लाइंट को भेजी जाती है.

यह बफ़र हैंडलिंग काम करे, इसके लिए रैप किए गए कॉम्पोनेंट को कॉन्फ़िगर करना होगा आखिरी फ़िल्टर पर C2PortBlockPoolsTuning, ताकि फ़्रेमवर्क आउटपुट बफ़र हो अनुमानित ब्लॉक पूल से.

रोकें, रीसेट करें, और रिलीज़ करें

स्टॉप पर, रैप किया गया कॉम्पोनेंट, डिकोडर और चालू किए गए सभी फ़िल्टर को बंद कर देता है शुरू किए गए थे. रीसेट और रिलीज़ होने पर, सभी कॉम्पोनेंट रीसेट या रिलीज़ हो जाते हैं भले ही वे चालू हों या नहीं.

सैंपल फ़िल्टर प्लगिन लागू करना

प्लग इन को चालू करने के लिए, ये काम करें:

  1. लागू करें FilterPlugin लाइब्रेरी में इंटरफ़ेस किया हुआ है और उसे /vendor/lib[64]/libc2filterplugin.so.
  2. अगर ज़रूरी हो, तो mediacodec.te में अतिरिक्त अनुमतियां जोड़ें.
  3. अडैप्टेशन लेयर को Android 12 में अपडेट करें और media.c2 सेवा को फिर से बनाएं.

प्लग इन की जांच करें

सैंपल प्लगिन की जांच करने के लिए, ये काम करें:

  1. डिवाइस को फिर से बनाएं और फ़्लैश करें.
  2. यहां दिए गए निर्देश का इस्तेमाल करके, प्लगिन का सैंपल बनाएं:

    m sample-codec2-filter-plugin
    
  3. डिवाइस को फिर से माउंट करें और वेंडर प्लगिन का नाम बदलें, ताकि यह कोडेक सेवा से पहचाना जा सकता है.

    adb root
    adb remount
    adb reboot
    adb wait-for-device
    adb root
    adb remount
    adb
    push /out/target/<...>/lib64/sample-codec2-filter-plugin.so \
    
    /vendor/lib64/libc2filterplugin.so
    adb push
    /out/target/<...>/lib/sample-codec2-filter-plugin.so \
    
    /vendor/lib/libc2filterplugin.so
    adb reboot