ऑडियो के इंतज़ार का समय मेज़र करना

इस पेज पर, इनपुट और आउटपुट के इंतज़ार का समय मेज़र करने के सामान्य तरीकों के बारे में बताया गया है.

आउटपुट में लगने वाले समय को मेज़र करना

आउटपुट में लगने वाले समय को मेज़र करने के लिए, कई तकनीकें उपलब्ध हैं. इनकी सटीक जानकारी और उन्हें इस्तेमाल करने के तरीके के बारे में यहां बताया गया है. टेस्ट एनवायरमेंट के उदाहरण के लिए, टेस्टिंग सर्किट भी देखें.

एलईडी और ऑसिलोस्कोप टेस्ट

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

अगर आपको अपने प्रोडक्शन या प्रोटोटाइप डिवाइस पर एलईडी इंस्टॉल करने में समस्या आ रही है, तो इन तरीकों को आज़माएं:

  • इसी काम के लिए, सामान्य मकसद के इनपुट/आउटपुट (जीपीआईओ) पिन का इस्तेमाल करें.
  • JTAG या किसी दूसरे डीबगिंग पोर्ट का इस्तेमाल करें.
  • स्क्रीन की बैकलाइट का इस्तेमाल करें. ऐसा करना जोखिम भरा हो सकता है, क्योंकि बैकलाइट में थोड़ी देरी हो सकती है. इससे, रिस्पॉन्स में लगने वाले समय की गलत जानकारी मिल सकती है.

यह जांच करने के लिए:

  1. ऐसा ऐप्लिकेशन चलाएं जो ऑडियो आउटपुट करने के साथ-साथ, समय-समय पर एलईडी को पल्से करता हो.

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

  2. एलईडी के बगल में लाइट सेंसर लगाएं.
  3. ड्यूअल-चैनल ऑसिलोस्कोप की प्रोब को, वायर वाले हेडफ़ोन के जैक (लाइन आउटपुट) और लाइट सेंसर, दोनों से कनेक्ट करें.
  4. ऑसिलोस्कोप का इस्तेमाल करके, लाइट सेंसर सिग्नल के मुकाबले लाइन आउटपुट सिग्नल के बीच के समय के अंतर को मेज़र करें.

समय में अंतर, ऑडियो आउटपुट में लगने वाला अनुमानित समय होता है. ऐसा यह मानते हुए किया जाता है कि एलईडी और लाइट सेंसर में लगने वाला समय शून्य है. आम तौर पर, एलईडी और लाइट सेंसर, दोनों की रिस्पॉन्स टाइम एक मिलीसेकंड या उससे कम होती है. यह रिस्पॉन्स टाइम इतना कम होता है कि इसे अनदेखा किया जा सकता है.

अनुरोध भेजने और जवाब मिलने में लगने वाला समय मेज़र करना

राउंड-ट्रिप लेटेंसी, आउटपुट लेटेंसी और इनपुट लेटेंसी का कुल योग होता है.

लार्सन टेस्ट

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

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

डिवाइस के स्पीकर से ऑडियो आउटपुट में लगने वाला समय, हेडसेट कनेक्टर से ऑडियो आउटपुट में लगने वाले समय से काफ़ी ज़्यादा हो सकता है. ऐसा स्पीकर की आवाज़ को ठीक करने और उसे सुरक्षित रखने की सुविधा की वजह से होता है.

यह जांच करने के लिए:

  1. ऐसा ऐप्लिकेशन चलाएं जो माइक्रोफ़ोन से ऑडियो रिकॉर्ड करता हो और रिकॉर्ड किए गए डेटा को तुरंत स्पीकर पर चलाता हो.
  2. बाहर से कोई आवाज़ करें, जैसे कि माइक्रोफ़ोन के पास पेंसिल से खटखटाना. इस शोर से फ़ीडबैक लूप जनरेट होता है. इसके अलावा, सॉफ़्टवेयर का इस्तेमाल करके लूप में इंपल्स इंजेक्ट किया जा सकता है.
  3. आउटपुट के इंतज़ार का समय, इनपुट के इंतज़ार का समय, और ऐप्लिकेशन के ओवरहेड का कुल योग पाने के लिए, फ़ीडबैक के पल्से के बीच के समय को मेज़र करें.

लार्सन टेस्ट के लिए ऐप्लिकेशन पाने के लिए, यहां कुछ संसाधन दिए गए हैं:

  • Dr. Rick O'Rang loopback ऐप्लिकेशन, ऑडियो फ़ीडबैक की जांच करने के लिए बनाया गया Android ऐप्लिकेशन है. Google Play से ऐप्लिकेशन डाउनलोड करें या GitHub से सोर्स कोड पाएं.
  • हमने slesTestFeedback.cpp पर, लागू करने का एक उदाहरण भी पब्लिश किया है. यह एक कमांड-लाइन ऐप्लिकेशन है और इसे प्लैटफ़ॉर्म बिल्ड एनवायरमेंट का इस्तेमाल करके बनाया गया है. हालांकि, दूसरे एनवायरमेंट के लिए कोड को अपनाना आसान होना चाहिए. आपको audio_utils लाइब्रेरी में मौजूद, नॉन-ब्लॉकिंग FIFO कोड की भी ज़रूरत होगी.

ऑडियो लूपबैक डोंगल

Dr. Rick O'Rang ऑडियो लूपबैक डोंगल का इस्तेमाल, हेडसेट कनेक्टर पर, ऑडियो के रीसेंड होने में लगने वाले समय को मेज़र करने के लिए किया जा सकता है. नीचे दी गई इमेज में, एक बार लूप में इंपल्स डालने और फिर फ़ीडबैक लूप को ऑसीलेट करने की वजह से मिलने वाले नतीजे को दिखाया गया है. दोलन की अवधि, दोतरफ़ा यात्रा में लगने वाला समय होता है. यहां किसी खास डिवाइस, सॉफ़्टवेयर रिलीज़, और जांच की स्थितियों के बारे में जानकारी नहीं दी गई है. दिखाए गए नतीजों को बढ़ा-चढ़ाकर नहीं बताया जाना चाहिए.

राउंड-ट्रिप मेज़रमेंट

पहली इमेज. राउंड-ट्रिप मेज़रमेंट

शोर कम करने के लिए, आपको यूएसबी केबल हटानी पड़ सकती है. साथ ही, ऑसिलेशन को स्थिर रखने के लिए वॉल्यूम लेवल में बदलाव करना पड़ सकता है.

इनपुट में लगने वाले समय का आकलन करना

आउटपुट के इंतज़ार के समय की तुलना में, इनपुट के इंतज़ार के समय को मेज़र करना ज़्यादा मुश्किल होता है. इन जांचों से आपको मदद मिल सकती है.

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

प्रोटोटाइप डिवाइस पर जीपीआईओ पिन का इस्तेमाल करने की एक और तकनीक है. डिवाइस को ऑडियो सिग्नल भेजते समय, बाहरी तौर पर GPIO इनपुट को भी पल्से दें. ऐसा ऐप्लिकेशन चलाएं जो जीपीआईओ सिग्नल और ऑडियो डेटा के आने के समय के अंतर की तुलना करता हो.

इंतज़ार का समय कम करना

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

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

कम चलने की जांच करते समय:

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

कम चलने की वजहें पता चलने के बाद, इसका फ़ायदा पाने के लिए, बफ़र की संख्या और साइज़ कम करें. बफ़र की संख्या और साइज़ को कम करने के लिए, अंडररन का विश्लेषण करने और उसकी वजहों को ठीक करने से पहले, जल्दबाजी करने से सिर्फ़ परेशानी होती है.

टूल

systrace एक बेहतरीन टूल है, जिसका इस्तेमाल कई कामों के लिए किया जा सकता है. उदाहरण के लिए, सिस्टम-लेवल पर परफ़ॉर्मेंस से जुड़ी गड़बड़ियों का पता लगाने के लिए.

dumpsys media.audio_flinger के आउटपुट में, "सिंपल मूविंग स्टैटिस्टिक्स" नाम का एक उपयोगी सेक्शन भी होता है. इसमें हर ऑडियो मिक्स और I/O साइकल के लिए, बीते समय में हुए बदलावों की खास जानकारी दी गई है. आम तौर पर, समय की सभी मेज़रमेंट, औसत या नाममात्र साइकल के समय के बराबर होनी चाहिए. अगर आपको कम से कम समयावधि बहुत कम या ज़्यादा से ज़्यादा समयावधि बहुत ज़्यादा दिखती है, तो इसका मतलब है कि कोई समस्या है. हो सकता है कि शेड्यूल करने में ज़्यादा समय लग रहा हो या इंटरप्ट करने की सुविधा बंद होने में ज़्यादा समय लग रहा हो. आउटपुट का टेल हिस्सा खास तौर पर मददगार होता है, क्योंकि यह +/- 3 स्टैंडर्ड डेविएशन से ज़्यादा की वैरिएबिलिटी को हाइलाइट करता है.