संगत मीडिया ट्रांसकोडिंग

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

संगत मीडिया ट्रांसकोडिंग सुविधा डिफ़ॉल्ट रूप से बंद है। मीडिया ट्रांसकोडिंग का अनुरोध करने के लिए, ऐप्स को अपनी मीडिया क्षमताओं की घोषणा करनी होगी। मीडिया क्षमताओं की घोषणा करने के बारे में अधिक जानकारी के लिए, Android डेवलपर साइट पर संगत मीडिया ट्रांसकोडिंग देखें।

यह काम किस प्रकार करता है

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

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

चित्र 1 मीडिया ट्रांसकोडिंग प्रक्रिया का एक सिंहावलोकन दिखाता है।

संगत मीडिया ट्रांसकोडिंग प्रक्रिया

चित्रा 1. संगत मीडिया ट्रांसकोडिंग का अवलोकन।

समर्थित प्रारूप

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

  • HEVC (8-बिट) से AVC: कोडेक रूपांतरण एक मीडियाकोडेक डिकोडर और एक मीडियाकोड एन्कोडर को जोड़कर किया जाता है।
  • HDR10+ (10-बिट) से AVC (SDR): HDR से SDR रूपांतरण मीडियाकोडेक इंस्टेंस और डिकोडर इंस्टेंस में एक विक्रेता प्लगइन हुक का उपयोग करके किया जाता है। अधिक जानकारी के लिए, एचडीआर से एसडीआर एन्कोडिंग देखें।

समर्थित सामग्री स्रोत

संगत मीडिया ट्रांसकोडिंग सुविधा मूल ओईएम कैमरा ऐप द्वारा उत्पन्न ऑन-डिवाइस मीडिया का समर्थन करती है जो प्राथमिक बाहरी वॉल्यूम में DCIM/Camera/ फ़ोल्डर में संग्रहीत है। यह फीचर सेकेंडरी स्टोरेज पर मीडिया को सपोर्ट नहीं करता है। ईमेल या एसडी कार्ड के माध्यम से उपकरणों को दी गई सामग्री समर्थित नहीं है।

ऐप्स विभिन्न फाइलपथों के आधार पर फाइलों तक पहुंचते हैं। निम्नलिखित उन फ़ाइलपथों का वर्णन करता है जहाँ ट्रांसकोडिंग सक्षम या बायपास की गई है:

  • ट्रांसकोडिंग सक्षम:

    • MediaStore APIs के माध्यम से ऐप एक्सेस
    • जावा और मूल कोड सहित प्रत्यक्ष फ़ाइलपथ एपीआई के माध्यम से ऐप का उपयोग
    • स्टोरेज एक्सेस फ्रेमवर्क (एसएएफ) के माध्यम से ऐप एक्सेस
    • ओएस शेयर शीट इरादों के माध्यम से ऐप एक्सेस। (मीडियास्टोर यूआरआई केवल)
    • फोन से पीसी में एमटीपी/पीटीपी फाइल ट्रांसफर
  • ट्रांसकोडिंग बाईपास:

    • एसडी कार्ड निकालकर डिवाइस से फाइल ट्रांसफर करना
    • आस-पास शेयर या ब्लूटूथ स्थानांतरण जैसे विकल्पों का उपयोग करके डिवाइस से डिवाइस में फ़ाइलें स्थानांतरित करना।

ट्रांसकोडिंग के लिए अनुकूलित फ़ाइलपथ जोड़ें

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

फ़ाइलपथ जोड़ने के लिए, ट्रांसकोड पथ रनटाइम संसाधन ओवरले (RRO) , 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

वास्तुकला सिंहावलोकन

यह खंड मीडिया ट्रांसकोडिंग सुविधा की वास्तुकला का वर्णन करता है।

मीडिया-ट्रांसकोडिंग-वास्तुकला

चित्रा 2. मीडिया ट्रांसकोडिंग वास्तुकला।

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

  • MediaTranscodingManager सिस्टम API: इंटरफ़ेस जो क्लाइंट को MediaTranscoding सेवा के साथ संचार करने की अनुमति देता है। MediaProvider मॉड्यूल इस API का उपयोग करता है।
  • MediaTranscodingService: स्थानीय सेवा जो क्लाइंट कनेक्शन का प्रबंधन करती है, ट्रांसकोडिंग अनुरोधों को शेड्यूल करती है, और TranscodingSessions सत्र के लिए बहीखाता का प्रबंधन करती है।
  • MediaTranscoder: स्थानीय पुस्तकालय जो ट्रांसकोडिंग करता है। यह पुस्तकालय मॉड्यूल के साथ संगत होने के लिए मीडिया ढांचे एनडीके के शीर्ष पर बनाया गया है।

संगत मीडिया ट्रांसकोडिंग सुविधा सेवा और मीडिया ट्रांसकोडर दोनों में ट्रांसकोडिंग मीट्रिक लॉग करती है। समय पर बग फिक्स और अपडेट की अनुमति देने के लिए क्लाइंट साइड और सर्विस साइड कोड MediaProvider मॉड्यूल में हैं।

फ़ाइल का उपयोग

संगत मीडिया ट्रांसकोडिंग को यूजरस्पेस (FUSE) फाइल सिस्टम में फाइल सिस्टम के शीर्ष पर बनाया गया है, जिसका उपयोग स्कोप्ड स्टोरेज के लिए किया जाता है। FUSE मीडियाप्रोवाइडर मॉड्यूल को यूजर स्पेस में फाइल ऑपरेशंस की जांच करने और एक्सेस को अनुमति देने, अस्वीकार करने या रिडक्ट करने की नीति के आधार पर फाइलों तक पहुंच बनाने में सक्षम बनाता है।

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

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

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

ऐप्स निम्न विकल्पों का उपयोग करके ट्रांसकोड किए गए एसेट का अनुरोध कर सकते हैं:

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

USB स्थानान्तरण (डिवाइस से PC) के लिए, ट्रांसकोडिंग डिफ़ॉल्ट रूप से अक्षम है, लेकिन उपयोगकर्ता USB वरीयता सेटिंग स्क्रीन में वीडियो को AVC में कनवर्ट करें का उपयोग करके ट्रांसकोडिंग को सक्षम करना चुन सकते हैं जैसा कि चित्र 3 में दिखाया गया है।

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

चित्रा 3. यूएसबी वरीयता स्क्रीन में मीडिया ट्रांसकोडिंग को सक्षम करने के लिए टॉगल करें।

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

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

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

यदि कोई ऐप इन सभी प्रतिबंधों को पार करता है, तो फ्रेमवर्क मूल फ़ाइल डिस्क्रिप्टर लौटाता है।

डिवाइस की आवश्यकताएं

संगत मीडिया ट्रांसकोडिंग सुविधा का समर्थन करने के लिए, उपकरणों को निम्नलिखित आवश्यकताओं को पूरा करना होगा:

  • डिवाइस में मूल कैमरा ऐप पर डिफ़ॉल्ट रूप से HEVC एन्कोडिंग सक्षम है
  • (एचडीआर से एसडीआर ट्रांसकोडिंग का समर्थन करने वाले उपकरण) डिवाइस एचडीआर वीडियो कैप्चर का समर्थन करता है

मीडिया ट्रांसकोडिंग के लिए डिवाइस के प्रदर्शन को सुनिश्चित करने के लिए, वीडियो हार्डवेयर और स्टोरेज रीड/राइट एक्सेस परफॉर्मेंस को ऑप्टिमाइज़ किया जाना चाहिए। जब मीडिया कोडेक्स को 1 के बराबर प्राथमिकता के साथ कॉन्फ़िगर किया जाता है, तो कोडेक्स को उच्चतम संभव थ्रूपुट पर काम करना चाहिए। हम अनुशंसा करते हैं कि ट्रांसकोडिंग प्रदर्शन न्यूनतम 200 एफपीएस प्राप्त करे। अपने हार्डवेयर प्रदर्शन का परीक्षण करने के लिए, frameworks/av/media/libmediatranscoding/transcoder/benchmark बेंचमार्क पर मीडिया ट्रांसकोडर बेंचमार्क चलाएं।

मान्यकरण

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

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

विश्व स्तर पर मीडिया ट्रांसकोडिंग सक्षम करें

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

ट्रांसकोडिंग स्थिति जांचें

परीक्षण के दौरान, आप वर्तमान और पिछले ट्रांसकोडिंग सत्रों सहित ट्रांसकोडिंग स्थिति की जांच के लिए निम्नलिखित एडीबी शेल कमांड का उपयोग कर सकते हैं:

adb shell dumpsys media.transcoding

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

परीक्षण उद्देश्यों के लिए, आप निम्न आदेश का उपयोग करके ट्रांसकोडिंग के लिए एक मिनट की वीडियो लंबाई सीमा बढ़ा सकते हैं। इस आदेश को चलाने के बाद रिबूट की आवश्यकता हो सकती है।

adb shell device_config put storage_native_boot transcode_max_duration_ms <LARGE_NUMBER_IN_MS>

एओएसपी स्रोत और संदर्भ

संगत मीडिया ट्रांसकोडिंग से संबंधित एओएसपी स्रोत कोड निम्नलिखित हैं।

एचडीआर से एसडीआर एन्कोडिंग

एचडीआर से एसडीआर एन्कोडिंग का समर्थन करने के लिए, डिवाइस निर्माता /platform/frameworks/av/media/codec2/hidl/plugin/ में स्थित एओएसपी नमूना कोडेक 2.0 फ़िल्टर प्लगइन का उपयोग कर सकते हैं। यह खंड बताता है कि फ़िल्टर प्लगइन कैसे काम करता है, प्लगइन को कैसे कार्यान्वित करें और प्लगइन का परीक्षण कैसे करें।

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

यह काम किस प्रकार करता है

यह खंड कोडेक 2.0 फिल्टर प्लगइन के सामान्य व्यवहार का वर्णन करता है।

पार्श्वभूमि

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

अवलोकन

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

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

चित्र 1. फ़िल्टर प्लगइन आर्किटेक्चर।

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

FilterPlugin.h इंटरफ़ेस फ़िल्टर को दिखाने के लिए निम्नलिखित API को परिभाषित करता है:

  • std::shared_ptr<C2ComponentStore>getComponentStore()

    एक C2ComponentStore ऑब्जेक्ट देता है जिसमें फ़िल्टर होते हैं। यह विक्रेता के कोडेक 2.0 कार्यान्वयन से अलग है। आमतौर पर, इस स्टोर में केवल te FilterWrapper वर्ग द्वारा उपयोग किए जाने वाले फ़िल्टर होते हैं।

  • bool describe(C2String name, Descriptor *desc)

    C2ComponentStore से क्या उपलब्ध है, इसके अलावा फिल्टर का वर्णन करता है। निम्नलिखित विवरण परिभाषित हैं:

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

    यदि फ़िल्टर घटक बफ़र को बदल देता है, तो true लौटाता है। उदाहरण के लिए, यदि लक्ष्य स्थानांतरण फ़ंक्शन SDR है और इनपुट स्थानांतरण फ़ंक्शन HDR (HLG या PQ) है, तो टोन-मैपिंग फ़िल्टर true है।

फ़िल्टरवापर विवरण

यह खंड FilterWrapper वर्ग के विवरण का वर्णन करता है।

सृष्टि

लपेटा हुआ घटक निर्माण के समय अंतर्निहित डिकोडर और सभी परिभाषित फ़िल्टर को तुरंत चालू करता है।

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

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

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

चित्र 2. क्वेरी और कॉन्फ़िगरेशन।

शुरू

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

बफर हैंडलिंग

बफर हैंडलिंग

चित्रा 3. बफर हैंडलिंग।

लिपटे डिकोडर के लिए कतारबद्ध बफ़र अंतर्निहित डिकोडर पर जाते हैं। लपेटा हुआ घटक एक 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