অডিও লেটেন্সি পরিমাপ করুন

এই পৃষ্ঠাটি ইনপুট এবং আউটপুট লেটেন্সি পরিমাপের জন্য সাধারণ পদ্ধতিগুলি বর্ণনা করে৷

আউটপুট লেটেন্সি পরিমাপ করুন

আউটপুট লেটেন্সি পরিমাপ করার জন্য বিভিন্ন কৌশল উপলব্ধ রয়েছে, যার মধ্যে বিভিন্ন মাত্রার নির্ভুলতা এবং চালানোর সহজতা রয়েছে, নীচে বর্ণিত হয়েছে। এছাড়াও একটি উদাহরণ পরীক্ষার পরিবেশের জন্য টেস্টিং সার্কিট দেখুন।

LED এবং অসিলোস্কোপ পরীক্ষা

এই পরীক্ষাটি ডিভাইসের LED সূচকের সাথে সম্পর্কিত বিলম্বতা পরিমাপ করে। আপনার প্রোডাকশন ডিভাইসে LED না থাকলে, আপনি একটি প্রোটোটাইপ ফর্ম ফ্যাক্টর ডিভাইসে LED ইনস্টল করতে পারেন। এক্সপোজড সার্কিটি সহ প্রোটোটাইপ ডিভাইসগুলিতে আরও ভাল নির্ভুলতার জন্য, লাইট সেন্সর লেটেন্সি বাইপাস করতে সরাসরি LED এর সাথে একটি অসিলোস্কোপ প্রোব সংযুক্ত করুন৷

আপনি যদি আপনার প্রোডাকশন বা প্রোটোটাইপ ডিভাইসে একটি LED ইনস্টল করতে না পারেন তবে নিম্নলিখিত সমাধানগুলি চেষ্টা করুন:

  • একই উদ্দেশ্যে একটি সাধারণ উদ্দেশ্য ইনপুট/আউটপুট (GPIO) পিন ব্যবহার করুন।
  • JTAG বা অন্য ডিবাগিং পোর্ট ব্যবহার করুন।
  • পর্দা ব্যাকলাইট ব্যবহার করুন. এটি ঝুঁকিপূর্ণ হতে পারে কারণ ব্যাকলাইটের একটি অ-নগণ্য লেটেন্সি থাকতে পারে এবং এটি একটি ভুল লেটেন্সি পড়ার ক্ষেত্রে অবদান রাখতে পারে।

এই পরীক্ষা পরিচালনা করতে:

  1. এমন একটি অ্যাপ চালান যা পর্যায়ক্রমে LED স্পন্দিত করে একই সময়ে এটি অডিও আউটপুট করে।

    দ্রষ্টব্য: দরকারী ফলাফল পেতে, পরীক্ষা অ্যাপে সঠিক API ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ যাতে আপনি দ্রুত অডিও আউটপুট পাথ অনুশীলন করছেন। পটভূমির জন্য কম লেটেন্সির জন্য ডিজাইন দেখুন।

  2. LED এর পাশে একটি লাইট সেন্সর রাখুন।
  3. একটি ডুয়াল-চ্যানেল অসিলোস্কোপের প্রোবগুলিকে তারযুক্ত হেডফোন জ্যাক (লাইন আউটপুট) এবং হালকা সেন্সর উভয়ের সাথে সংযুক্ত করুন।
  4. লাইন আউটপুট সংকেত বনাম আলো সেন্সর সংকেত পর্যবেক্ষণের মধ্যে সময়ের পার্থক্য পরিমাপ করতে অসিলোস্কোপ ব্যবহার করুন।

সময়ের পার্থক্য হল আনুমানিক অডিও আউটপুট লেটেন্সি, ধরে নিই যে LED লেটেন্সি এবং লাইট সেন্সর লেটেন্সি উভয়ই শূন্য৷ সাধারণত, এলইডি এবং লাইট সেন্সর প্রতিটির এক মিলিসেকেন্ড বা তার কম ক্রমে অপেক্ষাকৃত কম লেটেন্সি থাকে, যা উপেক্ষা করার জন্য যথেষ্ট কম।

রাউন্ড-ট্রিপ লেটেন্সি পরিমাপ করুন

রাউন্ড-ট্রিপ লেটেন্সি হল আউটপুট লেটেন্সি এবং ইনপুট লেটেন্সির সমষ্টি।

লারসেন পরীক্ষা

সবচেয়ে সহজ লেটেন্সি টেস্টগুলির মধ্যে একটি হল একটি অডিও ফিডব্যাক (লার্সেন ইফেক্ট) পরীক্ষা। এটি একটি ইমপালস রেসপন্স লুপ টাইমিং করে সম্মিলিত আউটপুট এবং ইনপুট লেটেন্সির একটি অপরিশোধিত পরিমাপ প্রদান করে। পরীক্ষার প্রকৃতির কারণে এই পরীক্ষাটি নিজেই বিশদ বিশ্লেষণের জন্য খুব বেশি উপযোগী নয়, তবে এটি অন্যান্য পরীক্ষাগুলি ক্রমাঙ্কন করার জন্য এবং একটি উপরের সীমানা স্থাপনের জন্য দরকারী হতে পারে।

এই পদ্ধতিটি উপাদানের সময়গুলিকে ভেঙে দেয় না, যা গুরুত্বপূর্ণ যখন আউটপুট লেটেন্সি এবং ইনপুট লেটেন্সি স্বাধীন হয়৷ তাই এই পদ্ধতিটি বিচ্ছিন্নভাবে সুনির্দিষ্ট আউটপুট লেটেন্সি বা ইনপুট লেটেন্সি মান পরিমাপের জন্য সুপারিশ করা হয় না, তবে মোটামুটি অনুমান স্থাপনের জন্য এটি কার্যকর হতে পারে।

অন-ডিভাইস স্পিকারের আউটপুট লেটেন্সি হেডসেট কানেক্টরে আউটপুট লেটেন্সি থেকে উল্লেখযোগ্যভাবে বড় হতে পারে। এটি স্পিকার সংশোধন এবং সুরক্ষার কারণে।

এই পরীক্ষা পরিচালনা করতে:

  1. একটি অ্যাপ চালান যা মাইক্রোফোন থেকে অডিও ক্যাপচার করে এবং অবিলম্বে স্পিকারের উপর ক্যাপচার করা ডেটা বাজায়।
  2. বাহ্যিকভাবে একটি শব্দ তৈরি করুন, যেমন মাইক্রোফোন দ্বারা একটি পেন্সিল আলতো চাপুন৷ এই শব্দটি একটি প্রতিক্রিয়া লুপ তৈরি করে। বিকল্পভাবে, কেউ সফ্টওয়্যার ব্যবহার করে লুপের মধ্যে একটি আবেগ ইনজেক্ট করতে পারে।
  3. আউটপুট লেটেন্সি, ইনপুট লেটেন্সি এবং অ্যাপ্লিকেশন ওভারহেডের যোগফল পেতে ফিডব্যাক পালসের মধ্যে সময় পরিমাপ করুন।

লার্সেন পরীক্ষার জন্য একটি অ্যাপ পাওয়ার জন্য এখানে কিছু সংস্থান রয়েছে:

  • Dr. Rick O'Rang লুপব্যাক অ্যাপ হল অডিও ফিডব্যাক পরীক্ষার জন্য একটি Android অ্যাপ। আপনি Google Play থেকে অ্যাপটি ডাউনলোড করতে পারেন বা GitHub থেকে সোর্স কোড পেতে পারেন
  • আমরা slesTestFeedback.cpp- এ একটি উদাহরণ বাস্তবায়নও প্রকাশ করেছি। এটি একটি কমান্ড-লাইন অ্যাপ এবং প্লাটফর্ম বিল্ড এনভায়রনমেন্ট ব্যবহার করে তৈরি করা হয়েছে; তবে অন্যান্য পরিবেশের জন্য কোড গ্রহণ করা সহজ হওয়া উচিত। আপনার audio_utils লাইব্রেরিতে অবস্থিত নন-ব্লকিং FIFO কোডেরও প্রয়োজন হবে।

অডিও লুপব্যাক ডঙ্গল

ডাঃ রিক ও'রাং অডিও লুপব্যাক ডঙ্গল হেডসেট সংযোগকারীর উপর রাউন্ড-ট্রিপ লেটেন্সি পরিমাপের জন্য কার্যকর। নীচের চিত্রটি একবার লুপে একটি ইমপালস ইনজেক্ট করার ফলাফল প্রদর্শন করে, এবং তারপরে প্রতিক্রিয়া লুপটিকে দোদুল্যমান হতে দেয়। দোলনের সময়কাল হল রাউন্ড-ট্রিপ লেটেন্সি। নির্দিষ্ট ডিভাইস, সফ্টওয়্যার রিলিজ, এবং পরীক্ষার শর্ত এখানে নির্দিষ্ট করা নেই। প্রদর্শিত ফলাফল এক্সট্রাপোলেট করা উচিত নয়।

রাউন্ড-ট্রিপ পরিমাপ

চিত্র 1. রাউন্ড-ট্রিপ পরিমাপ

আওয়াজ কমাতে আপনাকে USB কেবলটি সরাতে হবে এবং একটি স্থিতিশীল দোলন পেতে ভলিউম স্তর সামঞ্জস্য করতে হবে৷

ইনপুট লেটেন্সি পরিমাপ করুন

আউটপুট লেটেন্সির চেয়ে ইনপুট লেটেন্সি পরিমাপ করা আরও কঠিন। নিম্নলিখিত পরীক্ষা সাহায্য করতে পারে.

একটি পদ্ধতি হল প্রথমে এলইডি এবং অসিলোস্কোপ পদ্ধতি ব্যবহার করে আউটপুট লেটেন্সি নির্ধারণ করা এবং তারপর আউটপুট লেটেন্সি এবং ইনপুট লেটেন্সির যোগফল নির্ধারণ করতে অডিও ফিডব্যাক (লার্সেন) পরীক্ষা ব্যবহার করা। এই দুটি পরিমাপের মধ্যে পার্থক্য হল ইনপুট লেটেন্সি।

আরেকটি কৌশল হল একটি প্রোটোটাইপ ডিভাইসে একটি GPIO পিন ব্যবহার করা। বাহ্যিকভাবে, আপনি ডিভাইসে একটি অডিও সংকেত উপস্থাপন করার সাথে সাথেই একটি GPIO ইনপুট পালস করুন৷ একটি অ্যাপ চালান যা GPIO সংকেত এবং অডিও ডেটার আগমনের সময়ের পার্থক্য তুলনা করে।

বিলম্ব হ্রাস করুন

কম অডিও লেটেন্সি অর্জন করতে, পুরো সিস্টেম জুড়ে সময় নির্ধারণ, হ্যান্ডলিং, পাওয়ার ম্যানেজমেন্ট এবং ডিভাইস ড্রাইভার ডিজাইনে বিশেষ মনোযোগ দিন। আপনার লক্ষ্য হল প্ল্যাটফর্মের যেকোন অংশকে একটি SCHED_FIFO অডিও থ্রেডকে কয়েক মিলিসেকেন্ডের বেশি ব্লক করা থেকে আটকানো। এই ধরনের একটি পদ্ধতিগত পদ্ধতি অবলম্বন করে, আপনি অডিও লেটেন্সি কমাতে পারেন এবং সামগ্রিকভাবে আরও অনুমানযোগ্য পারফরম্যান্সের পার্শ্ব সুবিধা পেতে পারেন।

অডিও আন্ডাররান, যখন সেগুলি ঘটে, প্রায়শই শুধুমাত্র নির্দিষ্ট পরিস্থিতিতে বা শুধুমাত্র ট্রানজিশনে সনাক্ত করা যায়। নতুন অ্যাপ চালু করে এবং বিভিন্ন ডিসপ্লের মাধ্যমে দ্রুত স্ক্রোল করে সিস্টেমে চাপ দেওয়ার চেষ্টা করুন। কিন্তু সচেতন থাকুন যে কিছু পরীক্ষার শর্তগুলি ডিজাইনের লক্ষ্য অতিক্রম করার জন্য এতটাই চাপযুক্ত। উদাহরণস্বরূপ, একটি বাগ রিপোর্ট নেওয়া সিস্টেমে এত বড় লোড রাখে যে এই ক্ষেত্রে একটি আন্ডাররান থাকা গ্রহণযোগ্য হতে পারে।

আন্ডাররানের জন্য পরীক্ষা করার সময়:

  • অ্যাপ প্রসেসরের পরে যেকোনো ডিএসপি কনফিগার করুন যাতে এটি ন্যূনতম বিলম্ব যোগ করে।
  • বিভিন্ন অবস্থার অধীনে পরীক্ষা চালান যেমন স্ক্রীন চালু বা বন্ধ, USB প্লাগ ইন বা আনপ্লাগ করা, ওয়াইফাই চালু বা বন্ধ, ব্লুটুথ চালু বা বন্ধ এবং টেলিফোনি এবং ডেটা রেডিও চালু বা বন্ধ।
  • তুলনামূলকভাবে শান্ত সঙ্গীত নির্বাচন করুন যেটির সাথে আপনি খুব পরিচিত, এবং যা শুনতে সহজ।
  • অতিরিক্ত সংবেদনশীলতার জন্য তারযুক্ত হেডফোন ব্যবহার করুন।
  • নিজেকে বিরতি দিন যাতে আপনি "কানের ক্লান্তি" অনুভব না করেন।

একবার আপনি আন্ডাররানের অন্তর্নিহিত কারণগুলি খুঁজে পেলে, এটির সুবিধা নিতে বাফার সংখ্যা এবং আকার হ্রাস করুন। আন্ডাররান বিশ্লেষণ এবং আন্ডাররানের কারণগুলি ঠিক করার আগে বাফারের সংখ্যা এবং আকার হ্রাস করার আগ্রহী পদ্ধতির ফলাফল কেবল হতাশার কারণ।

টুলস

সিস্টেম-স্তরের কর্মক্ষমতা ত্রুটি নির্ণয়ের জন্য systrace একটি চমৎকার সাধারণ-উদ্দেশ্য সরঞ্জাম।

dumpsys media.audio_flinger এর আউটপুটে "সাধারণ চলমান পরিসংখ্যান" নামে একটি দরকারী বিভাগ রয়েছে। এতে প্রতিটি অডিও মিক্স এবং I/O চক্রের জন্য অতিবাহিত সময়ের পরিবর্তনশীলতার সারাংশ রয়েছে। আদর্শভাবে, সমস্ত সময়ের পরিমাপ গড় বা নামমাত্র চক্র সময়ের সমান হওয়া উচিত। যদি আপনি একটি খুব কম সর্বনিম্ন বা উচ্চ সর্বোচ্চ দেখতে পান, এটি একটি সমস্যার একটি ইঙ্গিত, সম্ভবত একটি উচ্চ শিডিউলিং লেটেন্সি বা বাধা নিষ্ক্রিয় সময়। আউটপুটের লেজের অংশ বিশেষভাবে সহায়ক, কারণ এটি +/- 3 স্ট্যান্ডার্ড বিচ্যুতির বাইরে পরিবর্তনশীলতাকে হাইলাইট করে।