USB ডিজিটাল অডিও

এই নিবন্ধে USB ডিজিটাল অডিও এবং সম্পর্কিত USB-ভিত্তিক প্রোটোকলের জন্য Android সহায়তা পর্যালোচনা করা হয়েছে।

দর্শক

এই নিবন্ধের লক্ষ্য হল Android ডিভাইস OEM, SoC ভেন্ডর, USB অডিও পেরিফেরাল সাপ্লায়ার, উন্নত অডিও অ্যাপ্লিকেশন ডেভেলপার, এবং Android-এ USB ডিজিটাল অডিও ইন্টার্নাল সম্পর্কে বিস্তারিত বোঝার চেষ্টা করা অন্যান্য ব্যক্তি।

Nexus ডিভাইসের গ্রাহকদের USB হোস্ট মোড ব্যবহার করে অডিও রেকর্ড ও প্লেব্যাক করা নিবন্ধটি Nexus সহায়তা কেন্দ্রে দেখতে হবে। এই নিবন্ধটি সাধারণ ব্যবহারকারীদের জন্য লেখা না হলেও, অডিওফাইল গ্রাহকরা এর কিছু অংশ পছন্দ করতে পারেন।

USB-এর ওভারভিউ

ইউনিভার্সাল সিরিয়াল বাস (USB) সম্পর্কে Wikipedia নিবন্ধে USB অনানুষ্ঠানিক বিবরণ দেওয়া আছে এবং USB Implementers Forum, Inc-এর প্রকাশিত স্ট্যান্ডার্ডে এর আনুষ্ঠানিক সংজ্ঞা দেওয়া আছে। সুবিধার জন্য, আমরা এখানে USB-এর মূল ধারণাগুলি সংক্ষিপ্তভাবে তুলে ধরছি, তবে স্ট্যান্ডার্ড হল প্রামাণিক রেফারেন্স।

মৌলিক ধারণা ও পরিভাষা

USB হল একটি বাস যেখানে ডেটা ট্রান্সফার অপারেশনের একটিই ইনিশিয়েটর থাকে, যাকে হোস্ট বলা হয়। বাসের মাধ্যমে হোস্ট পেরিফেরাল ডিভাইসের সাথে যোগাযোগ করে।

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

হোস্টের একটি গুরুত্বপূর্ণ ভূমিকা হল এনিউমারেশন: কোন কোন পেরিফেরাল বাসের সাথে কানেক্ট করা আছে তা শনাক্ত করার প্রসেস এবং ডেসক্রিপ্টরের মাধ্যমে প্রকাশ করা তাদের প্রপার্টি কোয়েরি করা।

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

প্রতিটি পেরিফেরাল ফাংশনের একটি ইন্টারফেস থাকে যা সেই ফাংশনের সাথে যোগাযোগ করার প্রোটোকলকে সংজ্ঞায়িত করে।

হোস্ট, পাইপ-এর মাধ্যমে এন্ডপয়েন্ট-এ পেরিফেরালের সাথে যোগাযোগ করে, পেরিফেরালের কোনও একটি ফাংশন দ্বারা ডেটা সোর্স বা সিঙ্ক প্রদান করা হয়।

পাইপ দুই ধরনের হয়: মেসেজ ও স্ট্রিম। দ্বিমুখী কন্ট্রোল ও স্ট্যাটাসের জন্য মেসেজ পাইপ ব্যবহার করা হয়। একমুখী ডেটা ট্রান্সফারের জন্য স্ট্রিম পাইপ ব্যবহার করা হয়।

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

ডেটা ট্রান্সফারের তিনটি প্রধান মোড আছে: ইন্টারাপ্ট, বাল্ক এবং আইসোক্রোনাস। অডিওর প্রসঙ্গে আইসোক্রোনাস মোড সম্পর্কে আরও আলোচনা করা হবে।

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

Android USB মোড

ডেভেলপার মোড

Android-এর প্রাথমিক রিলিজের পর থেকেই ডেভেলপমেন্ট মোড রয়েছে। Android ডিভাইসটি একটি হোস্ট পিসিতে USB পেরিফেরাল হিসেবে দেখা যায় যেখানে Linux, Mac OS X বা Windows-এর মতো ডেস্কটপ অপারেটিং সিস্টেম চলছে। শুধুমাত্র Android fastboot অথবা Android Debug Bridge (adb)-এর মতো পেরিফেরাল ফাংশন দেখা যায়। USB বাল্ক ডেটা ট্রান্সফার মোডের উপরে fastboot ও adb প্রোটোকল লেয়ার করা থাকে।

হোস্ট মোড

Android 3.1 (API লেভেল 12)-এ হোস্ট মোড চালু করা হয়েছে।

যেহেতু Android ডিভাইসকে হোস্ট হিসেবে কাজ করতে হবে এবং বেশিরভাগ Android ডিভাইসে একটি মাইক্রো-USB কানেক্টর থাকে যা সরাসরি হোস্ট অপারেশন করার অনুমতি দেয় না, এরকম একটি অন-দ্য-গো (OTG) অ্যাডাপ্টার সাধারণত প্রয়োজন হয়:

OTG

ছবি ১. অন-দ্য-গো (OTG) অ্যাডাপ্টার

পেরিফেরাল ডিভাইসের কতটা পাওয়ার প্রয়োজন এবং Android ডিভাইস কতটা পাওয়ার সাপ্লাই করতে পারে, তার উপর নির্ভর করে কোনও Android ডিভাইস কোনও নির্দিষ্ট পেরিফেরাল ডিভাইস চালানোর জন্য পর্যাপ্ত পাওয়ার নাও দিতে পারে। পর্যাপ্ত পাওয়ার উপলভ্য থাকলেও, Android ডিভাইসের ব্যাটারি চার্জ উল্লেখযোগ্যভাবে কমে যেতে পারে। এইসব পরিস্থিতির জন্য, এই ধরনের পাওয়ারড হাব ব্যবহার করুন:

পাওয়ারড হাব

ছবি ২. পাওয়ার্ড হাব

অ্যাক্সেসরি মোড

অ্যাক্সেসরি মোড Android 3.1 (API লেভেল 12)-এ চালু করা হয়েছে এবং Android 2.3.4-এ ব্যাক-পোর্ট করা হয়েছে। এই মোডে, Android ডিভাইস USB পেরিফেরাল হিসেবে কাজ করে, যা হোস্ট হিসেবে কাজ করে এমন ডকের মতো অন্য ডিভাইসের নিয়ন্ত্রণে থাকে। ডেভেলপমেন্ট মোড ও অ্যাক্সেসরি মোডের মধ্যে পার্থক্য হল adb ছাড়াও অতিরিক্ত USB ফাংশন হোস্টকে দেখা যায়। Android ডিভাইস ডেভেলপমেন্ট মোডে শুরু হয় এবং তারপরে আবার নেগোসিয়েশন প্রসেসের মাধ্যমে অ্যাক্সেসরি মোডে পরিবর্তিত হয়।

Android 4.1-এ অতিরিক্ত ফিচার সহ অ্যাক্সেসরি মোড বাড়ানো হয়েছে, বিশেষ করে নিচে বর্ণিত অডিও।

USB অডিও

USB ক্লাস

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

ড্রাইভারলেস শব্দটি ক্লাস কমপ্ল্যায়েন্ট-এর একটি সাধারণ সমার্থক শব্দ, যা ইঙ্গিত করে যে এই ধরনের পেরিফেরাল ইনস্টল করার জন্য অপারেটিং সিস্টেম নির্দিষ্ট ড্রাইভার-এর প্রয়োজন ছাড়াই এর স্ট্যান্ডার্ড ফিচার ব্যবহার করা সম্ভব। কেউ ধরে নিতে পারেন যে, কোনও পেরিফেরালকে "কোনও ড্রাইভারের প্রয়োজন নেই" হিসেবে বিজ্ঞাপন দেওয়া হলে, প্রধান ডেস্কটপ অপারেটিং সিস্টেমের জন্য সেটি ক্লাস কমপ্লায়েন্ট হবে, যদিও এর ব্যতিক্রম থাকতে পারে।

USB অডিও ক্লাস

এখানে আমরা শুধুমাত্র অডিও ফাংশন প্রয়োগ করে এমন পেরিফেরাল নিয়ে আলোচনা করব, তাই অডিও ডিভাইস ক্লাস মেনে চলব। USB অডিও ক্লাস স্পেসিফিকেশনের দুটি সংস্করণ আছে: ক্লাস ১ (UAC1) ও ২ (UAC2)।

অন্যান্য ক্লাসের সাথে তুলনা

USB-তে আরও অনেক ডিভাইস ক্লাস অন্তর্ভুক্ত থাকে, যার মধ্যে কিছু অডিও ক্লাসের সাথে গুলিয়ে ফেলা হতে পারে। ম্যাস স্টোরেজ ক্লাস (MSC) মিডিয়াতে সেক্টর-ভিত্তিক অ্যাক্সেসের জন্য ব্যবহার করা হয়, অন্যদিকে মিডিয়া ট্রান্সফার প্রোটোকল (MTP) মিডিয়াতে সম্পূর্ণ ফাইল অ্যাক্সেসের জন্য ব্যবহার করা হয়। অডিও ফাইল ট্রান্সফার করার জন্য MSC ও MTP, দু'টিই ব্যবহার করা যেতে পারে, তবে রিয়েল-টাইম স্ট্রিমিংয়ের জন্য শুধুমাত্র USB অডিও ক্লাস উপযুক্ত।

অডিও টার্মিনাল

অডিও পেরিফেরালের টার্মিনাল সাধারণত অ্যানালগ হয়। পেরিফেরালের ইনপুট টার্মিনালে দেখানো অ্যানালগ সিগন্যালকে একটি অ্যানালগ-টু-ডিজিটাল কনভার্টার (ADC)-এর মাধ্যমে ডিজিটাল সিগন্যালে পরিবর্তন করা হয় এবং হোস্টের দ্বারা ব্যবহার করার জন্য USB প্রোটোকলের মাধ্যমে নিয়ে যাওয়া হয়। ADC হল হোস্টের জন্য ডেটা সোর্স । একইভাবে, হোস্ট USB প্রোটোকলের মাধ্যমে পেরিফেরালে একটি ডিজিটাল অডিও সিগন্যাল পাঠায়, যেখানে একটি ডিজিটাল-টু-অ্যানালগ কনভার্টার (DAC) সেটিকে কনভার্ট করে অ্যানালগ আউটপুট টার্মিনালে প্রেজেন্ট করে। DAC হল হোস্টের জন্য একটি সিঙ্ক।

চ্যানেল

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

আইসোক্রোনাস ট্রান্সফার মোড

USB অডিও তার রিয়েল-টাইম বৈশিষ্ট্যের জন্য আইসোক্রোনাস ট্রান্সফার মোড ব্যবহার করে, এর ফলে ত্রুটি পুনরুদ্ধার করা যায় না। আইসোক্রোনাস মোডে, ব্যান্ডউইথ নিশ্চিত করা হয় এবং ডেটা ট্রান্সমিশন এরর একটি সাইক্লিক রিডান্ডেন্সি চেক (CRC) ব্যবহার করে শনাক্ত করা হয়। তবে, কোনও সমস্যা হলে প্যাকেট অ্যাকনলেজমেন্ট বা আবার ট্রান্সমিশন হয় না।

প্রতিটি ফ্রেমের শুরুতে (SOF) আইসোক্রোনাস ট্রান্সমিশন হয়। ফুল-স্পিডের জন্য SOF পিরিয়ড হল এক মিলিসেকেন্ড এবং হাই-স্পিডের জন্য ১২৫ মাইক্রোসেকেন্ড। প্রতিটি ফুল-স্পিড ফ্রেমে সর্বাধিক ১০২৩ বাইট পেলোড থাকে, এবং হাই-স্পিড ফ্রেমে সর্বাধিক ১০২৪ বাইট থাকে। এইসব ডেটা একত্রিত করে, আমরা সর্বাধিক ট্রান্সফার রেট ১,০২৩,০০০ বা ৮,১৯২,০০০ বাইট প্রতি সেকেন্ড হিসেবে গণনা করি। এটি কম্বাইন করা অডিও স্যাম্পেল রেট, চ্যানেল সংখ্যা এবং বিট ডেপথের উপর একটি তাত্ত্বিক ঊর্ধ্বসীমা সেট করে। ব্যবহারিক সীমা কম।

আইসোক্রোনাস মোডের মধ্যে তিনটি সাব-মোড আছে:

  • অ্যাডাপ্টিভ
  • অসমনিয়ত
  • সিংক্রোনাস

অ্যাডাপ্টিভ সাব-মোডে, পেরিফেরাল সিঙ্ক বা সোর্স হোস্টের সম্ভাব্য পরিবর্তিত স্যাম্পেল রেটের সাথে মানিয়ে নেয়।

অ্যাসিঙ্ক্রোনাস (এছাড়াও, এটিকে ইমপ্লিসিট ফিডব্যাক বলা হয়) সাব-মোডে, সিঙ্ক বা সোর্স স্যাম্পেল রেট নির্ধারণ করে এবং হোস্ট তা অ্যাডজাস্ট করে নেয়। অ্যাসিঙ্ক্রোনাস সাব-মোডের প্রাথমিক তাত্ত্বিক সুবিধা হল যে সোর্স বা সিঙ্ক USB ক্লক, DAC বা ADC-কে ড্রাইভ করে এমন ক্লকের সাথে ফিজিক্যালি ও ইলেকট্রিক্যালি আরও বেশি ক্লোজলি কানেক্টেড (এবং আসলে একই হতে পারে বা তা থেকে প্রাপ্ত) থাকে। এই নৈকট্যের অর্থ হল, অ্যাসিঙ্ক্রোনাস সাব-মোড ক্লক জিটার দ্বারা কম প্রভাবিত হবে। এছাড়াও, DAC বা ADC-এর ব্যবহৃত ক্লক হোস্ট ক্লকের তুলনায় আরও বেশি নির্ভুলতা ও কম ড্রিফ্টের জন্য ডিজাইন করা হতে পারে।

সিনক্রোনাস সাব-মোডে, প্রতিটি SOF পিরিয়ডে নির্দিষ্ট সংখ্যক বাইট ট্রান্সফার করা হয়। USB ক্লক থেকে অডিও স্যাম্পেল রেট কার্যকরভাবে পাওয়া যায়। সিঙ্ক্রোনাস সাব-মোড সাধারণত অডিওর সাথে ব্যবহার করা হয় না কারণ হোস্ট এবং পেরিফেরাল উভয়ই ইউএসবি ক্লকের উপর নির্ভর করে।

নিচের সারণীতে আইসোক্রোনাস সাব-মোডের সংক্ষিপ্তসার দেওয়া হল:

সাব-মোড প্যাকেট পিছু
বাইট সংখ্যা
স্যাম্পেল রেট
নির্ধারণ করে
অডিওর জন্য ব্যবহার করা হয়
অ্যাডাপ্টিভ ভেরিয়েবল হোস্ট হ্যাঁ
অ্যাসিঙ্ক্রোনাস ভেরিয়েবল পেরিফেরাল হ্যাঁ
সিঙ্ক্রোনাস সমাধান করা হয়েছে USB ক্লক no

বাস্তবে, সাব-মোড অবশ্যই গুরুত্বপূর্ণ, তবে অন্যান্য বিষয়গুলিও বিবেচনা করা উচিত।

USB অডিও ক্লাসের জন্য Android সহায়তা

ডেভেলপার মোড

ডেভেলপমেন্ট মোডে USB অডিও কাজ করে না।

হোস্ট মোড

Android 5.0 (API লেভেল 21) ও এর পরবর্তী যেকোনও ভার্সনে USB অডিও ক্লাস 1 (UAC1) ফিচারের একটি সাবসেট কাজ করে:

  • Android ডিভাইসকে হোস্ট হিসেবে কাজ করতে হবে
  • অডিও ফর্ম্যাট অবশ্যই PCM (ইন্টারফেস টাইপ I) হতে হবে
  • বিট ডেপথ ১৬-বিট, ২৪-বিট বা ৩২-বিট হতে হবে যেখানে ৩২-বিট শব্দের সবচেয়ে গুরুত্বপূর্ণ বিটের মধ্যে ২৪-বিট উপযোগী অডিও ডেটা লেফ্ট-জাস্টিফায়েড থাকে
  • স্যাম্পেল রেট অবশ্যই ৪৮, ৪৪.১, ৩২, ২৪, ২২.০৫, ১৬, ১২, ১১.০২৫ বা ৮ kHz হতে হবে
  • চ্যানেলের সংখ্যা ১ (মোনো) বা ২ (স্টিরিও) হতে হবে

Android ফ্রেমওয়ার্ক সোর্স কোড পুঙ্খানুপুঙ্খভাবে দেখলে, এইসব ফিচার কাজ করানোর জন্য ন্যূনতম প্রয়োজনীয় কোডের বাইরে অতিরিক্ত কোড দেখা যেতে পারে। তবে এই কোডটি যাচাই করা হয়নি, তাই আরও উন্নত ফিচার এখনও দাবি করা হয়নি।

অ্যাক্সেসরি মোড

Android 4.1 (API লেভেল ১৬) হোস্টে অডিও প্লেব্যাকের জন্য সীমিত সহায়তা যোগ করেছে। অ্যাক্সেসরি মোডে থাকাকালীন, Android অটোমেটিক USB-তে অডিও আউটপুট রাউট করে। অর্থাৎ, Android ডিভাইস হোস্টের জন্য ডেটা সোর্স হিসেবে কাজ করে, যেমন ডক।

অ্যাক্সেসরি মোড অডিওতে এইসব ফিচার থাকে:

  • Android ডিভাইসটি অবশ্যই একজন অভিজ্ঞ হোস্টের দ্বারা নিয়ন্ত্রিত হতে হবে যিনি প্রথমে Android ডিভাইসটিকে ডেভেলপমেন্ট মোড থেকে অ্যাক্সেসরি মোডে পরিবর্তন করতে পারবেন, এবং তারপরে হোস্টকে অবশ্যই উপযুক্ত এন্ডপয়েন্ট থেকে অডিও ডেটা ট্রান্সফার করতে হবে। তাই, হোস্টের কাছে Android ডিভাইসটি "ড্রাইভারলেস" হিসেবে মনে হয় না।
  • দিকনির্দেশ অবশ্যই ইনপুট হতে হবে, যা হোস্টের সাপেক্ষে প্রকাশ করা হয়
  • অডিও ফর্ম্যাট ১৬-বিট PCM হতে হবে
  • স্যাম্পেল রেট অবশ্যই ৪৪.১ kHz হতে হবে
  • চ্যানেলের সংখ্যা ২ (স্টেরিও) হতে হবে

অ্যাক্সেসরি মোড অডিও ব্যাপকভাবে গৃহীত হয়নি, এবং বর্তমানে নতুন ডিজাইনের জন্য সাজেস্ট করা হয় না।

USB ডিজিটাল অডিওর অ্যাপ্লিকেশন

নাম থেকেই বোঝা যায়, USB ডিজিটাল অডিও সিগন্যালকে সাধারণ TRS মিনি হেডসেট কানেক্টর দ্বারা ব্যবহৃত অ্যানালগ সিগন্যালের পরিবর্তে ডিজিটাল ডেটা স্ট্রিম দ্বারা দেখানো হয়। অবশেষে, যেকোনও ডিজিটাল সিগন্যাল শোনার আগে অ্যানালগে কনভার্ট করতে হবে। কনভার্সন কোথায় প্লেস করবেন তা বেছে নেওয়ার ক্ষেত্রে কিছু সুবিধা ও অসুবিধা আছে।

দুটি DAC-এর গল্প

নিচের উদাহরণ হিসেবে দেওয়া ডায়াগ্রামে আমরা দুটি ডিজাইন তুলনা করেছি। প্রথমে আমাদের কাছে একটি মোবাইল ডিভাইস আছে যাতে অ্যাপ্লিকেশন প্রসেসর (AP), অন-বোর্ড DAC, অ্যামপ্লিফায়ার এবং হেডফোনের সাথে অ্যাটাচ করা অ্যানালগ TRS কানেক্টর আছে। এছাড়াও, আমরা এক্সটার্নাল USB DAC ও অ্যামপ্লিফায়ারের সাথে USB কানেক্ট করা মোবাইল ডিভাইস এবং হেডফোনও বিবেচনা করি।

DAC তুলনা

ছবি ৩. দুটি DAC-এর তুলনা

কোন ডিজাইনটি বেশি ভালো? উত্তরটি আপনার প্রয়োজনের উপর নির্ভর করে। প্রতিটিরই সুবিধা ও অসুবিধা আছে।

মনে রাখবেন: এটি একটি কৃত্রিম তুলনা, কারণ বাস্তবে Android ডিভাইসে সম্ভবত দুটি বিকল্পই উপলভ্য থাকবে।

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

দ্বিতীয় ডিজাইনে, এক্সটার্নাল অডিও পেরিফেরাল C-কে বেশি ভালো অডিও কোয়ালিটি ও বেশি পাওয়ার আউটপুটের জন্য ডিজাইন করা যেতে পারে, এর ফলে সাধারণ মাস মার্কেট Android ডিভাইস B-এর খরচের উপর কোনও প্রভাব পড়বে না। হ্যাঁ, এটি আরও ব্যয়বহুল ডিজাইন, তবে খরচ শুধুমাত্র তারাই বহন করে যারা এটি চায়।

মোবাইল ডিভাইসে হাই-ডেনসিটি সার্কিট বোর্ড থাকে বলে পরিচিত, এর ফলে ক্রসটক হওয়ার সম্ভাবনা বেড়ে যায় যা পাশের অ্যানালগ সিগন্যালকে দুর্বল করে দেয়। ডিজিটাল কমিউনিকেশন নয়েজ দ্বারা কম প্রভাবিত হয়, তাই Android ডিভাইস A থেকে এক্সটার্নাল সার্কিট বোর্ড C-তে DAC সরিয়ে নিলে, ফাইনাল অ্যানালগ স্টেজকে ফিজিক্যালি ও ইলেকট্রিক্যালি ঘন ও নয়েজি সার্কিট বোর্ড থেকে আলাদা করা যায়, এর ফলে আরও ভালো কোয়ালিটির অডিও পাওয়া যায়।

অন্যদিকে, দ্বিতীয় ডিজাইনটি আরও জটিল এবং জটিলতা বাড়ার সাথে সাথে ব্যর্থ হওয়ার সম্ভাবনাও বেড়ে যায়। এছাড়াও, USB কন্ট্রোলার থেকে অতিরিক্ত লেটেন্সি হয়।

হোস্ট মোড অ্যাপ্লিকেশন

সাধারণত USB হোস্ট মোড অডিও অ্যাপ্লিকেশনের মধ্যে এগুলি অন্তর্ভুক্ত:

  • মিউজিক শোনা
  • টেলিফোনি
  • ইনস্ট্যান্ট মেসেজিং ও ভয়েস চ্যাট
  • রেকর্ডিং

এইসব অ্যাপ্লিকেশনের জন্য, Android একটি মানানসই USB ডিজিটাল অডিও পেরিফেরাল শনাক্ত করে এবং অডিও নীতি সংক্রান্ত নিয়মের উপর ভিত্তি করে, অডিও প্লেব্যাক ও ক্যাপচার অটোমেটিক যথাযথভাবে রুট করে। পেরিফেরালের প্রথম দুটি চ্যানেলে স্টিরিও কন্টেন্ট চালানো হয়।

USB ডিজিটাল অডিওর জন্য নির্দিষ্ট কোনও API নেই। উন্নত ব্যবহারের জন্য, অটোমেটিক রাউটিং এমন অ্যাপ্লিকেশনের সাথে হস্তক্ষেপ করতে পারে যা USB-অ্যাওয়ার। এই ধরনের অ্যাপ্লিকেশনের জন্য, সেটিংস / ডেভেলপার বিকল্প-এর মিডিয়া বিভাগে সংশ্লিষ্ট কন্ট্রোলের মাধ্যমে অটোমেটিক রাউটিং বন্ধ করুন।

হোস্ট মোডে থাকাকালীন ডিবাগ করুন

USB হোস্ট মোডে থাকাকালীন, USB-এর মাধ্যমে adb ডিবাগিং উপলভ্য থাকে না। বিকল্পের জন্য Android ডিবাগ ব্রিজ-এর ওয়্যারলেস ব্যবহার বিভাগ দেখুন।

USB অডিও প্রয়োগ করুন

অডিও পেরিফেরাল ভেন্ডরদের জন্য সাজেশন

Android ডিভাইসের সাথে ইন্টার-অপারেট করতে, অডিও পেরিফেরাল ভেন্ডরদের এগুলি করতে হবে:

  • অডিও ক্লাস মেনে চলার জন্য ডিজাইন করা; বর্তমানে Android ক্লাস ১-কে টার্গেট করে, তবে ক্লাস ২-এর জন্য পরিকল্পনা করা বুদ্ধিমানের কাজ
  • অস্বাভাবিকতা এড়িয়ে চলুন
  • রেফারেন্স ও জনপ্রিয় Android ডিভাইসের সাথে ইন্টার-অপারেবিলিটি পরীক্ষা করা
  • কাজ করে এমন ফিচার, অডিও ক্লাস মেনে চলা, পাওয়ার সংক্রান্ত প্রয়োজনীয়তা ইত্যাদি স্পষ্টভাবে ডকুমেন্ট করুন। যাতে গ্রাহকরা সচেতনভাবে সিদ্ধান্ত নিতে পারেন

Android ডিভাইস OEM ও SoC ভেন্ডরদের জন্য সাজেশন

USB ডিজিটাল অডিও কাজ করে এমন ডিভাইস তৈরি করতে, ডিভাইস OEM ও SoC ভেন্ডরদের এগুলি করতে হবে:

  • USB হোস্ট মোড সাপোর্ট করার জন্য হার্ডওয়্যার ডিজাইন করা
  • android.hardware.usb.host.xml ফিচার ফ্ল্যাগের মাধ্যমে ফ্রেমওয়ার্ক লেভেলে জেনেরিক USB হোস্ট সাপোর্ট চালু করুন
  • প্রয়োজনীয় সব কার্নেল ফিচার চালু করুন: USB হোস্ট মোড, USB অডিও, আইসোক্রোনাস ট্রান্সফার মোড
  • সাম্প্রতিক কার্নেল রিলিজ ও প্যাচ সম্পর্কে আপ-টু-ডেট থাকুন; ক্লাস কমপ্লায়েন্সের মহৎ উদ্দেশ্য থাকা সত্ত্বেও, অস্বাভাবিকতা সহ বিদ্যমান অডিও পেরিফেরাল আছে এবং সাম্প্রতিক কার্নেলে এই ধরনের অস্বাভাবিকতা সমাধানের উপায় আছে
  • নিচে বর্ণিত USB অডিও নীতি চালু করুন
  • device.mk-তে PRODUCT_PACKAGES-এ add audio.usb.default
  • সাধারণ USB অডিও পেরিফেরালের সাথে ইন্টার-অপারেবিলিটি পরীক্ষা করা

USB অডিও নীতি চালু করা

USB অডিও চালু করতে, অডিও নীতি কনফিগারেশন ফাইলে একটি এন্ট্রি যোগ করুন। এটি সাধারণত এখানে থাকে:

device/oem/codename/audio_policy.conf

পাথনেম কম্পোনেন্ট "oem" Android ডিভাইস প্রস্তুতকারী OEM-এর নাম দিয়ে পরিবর্তন করতে হবে এবং "codename" ডিভাইসের কোডনেম দিয়ে পরিবর্তন করতে হবে।

এখানে একটি এন্ট্রি উদাহরণ হিসেবে দেখানো হয়েছে:

audio_hw_modules {
  ...
  usb {
    outputs {
      usb_accessory {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_USB_ACCESSORY
      }
      usb_device {
        sampling_rates dynamic
        channel_masks dynamic
        formats dynamic
        devices AUDIO_DEVICE_OUT_USB_DEVICE
      }
    }
    inputs {
      usb_device {
        sampling_rates dynamic
        channel_masks AUDIO_CHANNEL_IN_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_IN_USB_DEVICE
      }
    }
  }
  ...
}

সোর্স কোড

USB অডিওর জন্য অডিও হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) ইমপ্লিমেন্টেশন এখানে থাকে:

hardware/libhardware/modules/usbaudio/

USB অডিও HAL, tinyalsa-এর উপর অনেক বেশি নির্ভর করে, যা অডিও পরিভাষা লিঙ্কে বর্ণনা করা হয়েছে। যদিও USB অডিও আইসোক্রোনাস ট্রান্সফারের উপর নির্ভর করে, ALSA ইমপ্লিমেন্টেশনের মাধ্যমে এটি অ্যাবস্ট্রাক্ট করা হয়। তাই USB অডিও HAL এবং tinyalsa-কে USB প্রোটোকলের এই অংশটি নিয়ে চিন্তিত হতে হবে না।

USB অডিও পরীক্ষা করা

USB অডিওর জন্য CTS টেস্টিং সংক্রান্ত তথ্যের জন্য, USB অডিও CTS যাচাইকারী পরীক্ষা দেখুন।