এই নিবন্ধটি USB ডিজিটাল অডিও এবং সম্পর্কিত USB-ভিত্তিক প্রোটোকলগুলির জন্য Android সমর্থন পর্যালোচনা করে৷
শ্রোতা
এই নিবন্ধের লক্ষ্য শ্রোতা হ'ল Android ডিভাইস OEMs, SoC বিক্রেতা, USB অডিও পেরিফেরাল সরবরাহকারী, উন্নত অডিও অ্যাপ্লিকেশন বিকাশকারী এবং অন্যরা যারা Android এ USB ডিজিটাল অডিও ইন্টারনাল সম্পর্কে বিশদ বোঝার চেষ্টা করছেন৷
Nexus ডিভাইসের শেষ ব্যবহারকারীদের পরিবর্তে Nexus সহায়তা কেন্দ্রে USB হোস্ট মোড ব্যবহার করে অডিও রেকর্ড এবং প্লে ব্যাক নিবন্ধটি দেখতে হবে। যদিও এই নিবন্ধটি শেষ ব্যবহারকারীদের দিকে ভিত্তিক নয়, কিছু অডিওফাইল গ্রাহকরা আগ্রহের অংশ খুঁজে পেতে পারেন।
ইউএসবি এর ওভারভিউ
ইউনিভার্সাল সিরিয়াল বাস (ইউএসবি) অনানুষ্ঠানিকভাবে উইকিপিডিয়া নিবন্ধ USB- এ বর্ণনা করা হয়েছে, এবং আনুষ্ঠানিকভাবে USB ইমপ্লিমেন্টার্স ফোরাম, Inc দ্বারা প্রকাশিত মান দ্বারা সংজ্ঞায়িত করা হয়েছে। সুবিধার জন্য, আমরা এখানে মূল USB ধারণাগুলিকে সংক্ষিপ্ত করি, কিন্তু মানগুলি হল প্রামাণিক রেফারেন্স৷
মৌলিক ধারণা এবং পরিভাষা
USB হল একটি বাস যেখানে ডেটা স্থানান্তর ক্রিয়াকলাপের একক সূচনাকারী, যাকে হোস্ট বলা হয়। হোস্ট বাসের মাধ্যমে পেরিফেরালগুলির সাথে যোগাযোগ করে।
দ্রষ্টব্য: শর্তাবলী ডিভাইস এবং আনুষঙ্গিক পেরিফেরাল এর সাধারণ প্রতিশব্দ। আমরা এখানে সেই শর্তগুলি এড়িয়ে চলুন, কারণ সেগুলি Android ডিভাইস বা অ্যাকসেসরি মোড নামক Android-নির্দিষ্ট ধারণার সাথে বিভ্রান্ত হতে পারে৷
একটি গুরুত্বপূর্ণ হোস্ট ভূমিকা হল গণনা : বাসের সাথে কোন পেরিফেরিয়ালগুলি সংযুক্ত রয়েছে তা সনাক্ত করার প্রক্রিয়া এবং বর্ণনাকারীদের মাধ্যমে প্রকাশ করা তাদের বৈশিষ্ট্যগুলি অনুসন্ধান করা।
একটি পেরিফেরাল একটি ভৌত বস্তু হতে পারে কিন্তু বাস্তবে একাধিক যৌক্তিক ফাংশন বাস্তবায়ন করে। উদাহরণস্বরূপ, একটি ওয়েবক্যাম পেরিফেরাল একটি ক্যামেরা ফাংশন এবং একটি মাইক্রোফোন অডিও ফাংশন উভয়ই থাকতে পারে।
প্রতিটি পেরিফেরাল ফাংশনের একটি ইন্টারফেস থাকে যা সেই ফাংশনের সাথে যোগাযোগ করার জন্য প্রোটোকলকে সংজ্ঞায়িত করে।
হোস্ট একটি পাইপের উপর দিয়ে একটি পেরিফেরালের সাথে একটি এন্ডপয়েন্টে যোগাযোগ করে, একটি ডেটা উৎস বা সিঙ্ক যা পেরিফেরালের ফাংশনগুলির একটি দ্বারা প্রদত্ত।
দুটি ধরণের পাইপ রয়েছে: বার্তা এবং প্রবাহ । একটি বার্তা পাইপ দ্বি-দিক নিয়ন্ত্রণ এবং স্থিতির জন্য ব্যবহৃত হয়। একটি স্ট্রিম পাইপ ইউনি-ডিরেকশনাল ডাটা ট্রান্সফারের জন্য ব্যবহার করা হয়।
হোস্ট সমস্ত ডেটা স্থানান্তর শুরু করে, তাই ইনপুট এবং আউটপুট পদগুলি হোস্টের সাপেক্ষে প্রকাশ করা হয়। একটি ইনপুট অপারেশন পেরিফেরাল থেকে হোস্টে ডেটা স্থানান্তর করে, যখন একটি আউটপুট অপারেশন হোস্ট থেকে পেরিফেরালে ডেটা স্থানান্তর করে।
তিনটি প্রধান ডেটা স্থানান্তর মোড রয়েছে: বাধা , বাল্ক এবং আইসোক্রোনাস । আইসোক্রোনাস মোড অডিও প্রসঙ্গে আরও আলোচনা করা হবে।
পেরিফেরালের টার্মিনাল থাকতে পারে যা পেরিফেরালের বাইরে বাইরের বিশ্বের সাথে সংযোগ করে। এইভাবে, পেরিফেরাল ইউএসবি প্রোটোকল এবং "বাস্তব বিশ্বের" সংকেতের মধ্যে অনুবাদ করতে কাজ করে। টার্মিনাল হল ফাংশনের লজিক্যাল অবজেক্ট।
অ্যান্ড্রয়েড ইউএসবি মোড
উন্নয়ন মোড
অ্যান্ড্রয়েডের প্রাথমিক প্রকাশের পর থেকে বিকাশ মোড উপস্থিত রয়েছে। লিনাক্স, ম্যাক ওএস এক্স, বা উইন্ডোজের মতো ডেস্কটপ অপারেটিং সিস্টেম চালিত হোস্ট পিসির জন্য অ্যান্ড্রয়েড ডিভাইসটি একটি USB পেরিফেরাল হিসাবে উপস্থিত হয়। একমাত্র দৃশ্যমান পেরিফেরাল ফাংশনটি হয় অ্যান্ড্রয়েড ফাস্টবুট বা অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) । ফাস্টবুট এবং অ্যাডবি প্রোটোকলগুলি ইউএসবি বাল্ক ডেটা ট্রান্সফার মোডে স্তরযুক্ত।
হোস্ট মোড
Android 3.1 (API লেভেল 12) এ হোস্ট মোড চালু করা হয়েছে।
যেহেতু অ্যান্ড্রয়েড ডিভাইসটিকে অবশ্যই হোস্ট হিসাবে কাজ করতে হবে, এবং বেশিরভাগ অ্যান্ড্রয়েড ডিভাইসে একটি মাইক্রো-ইউএসবি সংযোগকারী রয়েছে যা সরাসরি হোস্ট অপারেশনের অনুমতি দেয় না, একটি অন-দ্য-গো ( OTG ) অ্যাডাপ্টার যেমন এটি সাধারণত প্রয়োজন হয়:
![ওটিজি](https://source.android.com/static/docs/core/audio/images/otg.jpg?authuser=0&hl=bn)
চিত্র 1. অন-দ্য-গো (OTG) অ্যাডাপ্টার
একটি অ্যান্ড্রয়েড ডিভাইস একটি নির্দিষ্ট পেরিফেরাল পরিচালনা করার জন্য পর্যাপ্ত শক্তি নাও দিতে পারে, পেরিফেরালের কতটা শক্তি প্রয়োজন এবং অ্যান্ড্রয়েড ডিভাইসটি কতটা সরবরাহ করতে সক্ষম তার উপর নির্ভর করে। পর্যাপ্ত শক্তি পাওয়া গেলেও, Android ডিভাইসের ব্যাটারির চার্জ উল্লেখযোগ্যভাবে সংক্ষিপ্ত হতে পারে। এই পরিস্থিতিতে, একটি চালিত হাব ব্যবহার করুন যেমন:
![চালিত হাব](https://source.android.com/static/docs/core/audio/images/hub.jpg?authuser=0&hl=bn)
চিত্র 2. চালিত হাব
আনুষঙ্গিক মোড
অ্যাকসেসরি মোড অ্যান্ড্রয়েড 3.1 (এপিআই লেভেল 12) এ চালু করা হয়েছিল এবং অ্যান্ড্রয়েড 2.3.4 এ ব্যাক-পোর্ট করা হয়েছিল। এই মোডে, অ্যান্ড্রয়েড ডিভাইসটি একটি USB পেরিফেরাল হিসাবে কাজ করে, অন্য ডিভাইসের নিয়ন্ত্রণে যেমন একটি ডক যা হোস্ট হিসাবে কাজ করে। ডেভেলপমেন্ট মোড এবং আনুষঙ্গিক মোডের মধ্যে পার্থক্য হল যে অতিরিক্ত USB ফাংশনগুলি হোস্টের কাছে দৃশ্যমান, adb এর বাইরে। অ্যান্ড্রয়েড ডিভাইসটি বিকাশ মোডে শুরু হয় এবং তারপরে একটি পুনঃআলোচনা প্রক্রিয়ার মাধ্যমে আনুষঙ্গিক মোডে রূপান্তরিত হয়।
অ্যানড্রয়েড 4.1-এ অতিরিক্ত বৈশিষ্ট্য সহ আনুষঙ্গিক মোড প্রসারিত করা হয়েছিল, বিশেষত নীচে বর্ণিত অডিওতে।
ইউএসবি অডিও
ইউএসবি ক্লাস
প্রতিটি পেরিফেরাল ফাংশনে একটি যুক্ত ডিভাইস ক্লাস ডকুমেন্ট থাকে যা সেই ফাংশনের জন্য স্ট্যান্ডার্ড প্রোটোকল নির্দিষ্ট করে। এটি ক্লাস কমপ্লায়েন্ট হোস্ট এবং পেরিফেরাল ফাংশনগুলিকে একে অপরের কাজের বিস্তারিত জ্ঞান ছাড়াই আন্তঃচালনা করতে সক্ষম করে। যদি হোস্ট এবং পেরিফেরাল বিভিন্ন সত্তা দ্বারা সরবরাহ করা হয় তবে শ্রেণি সম্মতি গুরুত্বপূর্ণ।
ড্রাইভারহীন শব্দটি ক্লাস কমপ্লায়েন্ট এর একটি সাধারণ প্রতিশব্দ, যা নির্দেশ করে যে অপারেটিং-সিস্টেম নির্দিষ্ট ড্রাইভার ইনস্টল করার প্রয়োজন ছাড়াই এই ধরনের পেরিফেরালের মানক বৈশিষ্ট্যগুলি ব্যবহার করা সম্ভব। কেউ ধরে নিতে পারেন যে প্রধান ডেস্কটপ অপারেটিং সিস্টেমের জন্য "কোন ড্রাইভারের প্রয়োজন নেই" হিসাবে বিজ্ঞাপিত একটি পেরিফেরাল ক্লাস কমপ্লায়েন্ট হবে, যদিও ব্যতিক্রম থাকতে পারে।
ইউএসবি অডিও ক্লাস
এখানে আমরা কেবলমাত্র পেরিফেরালগুলির সাথে নিজেদেরকে উদ্বিগ্ন করি যা অডিও ফাংশনগুলি বাস্তবায়ন করে এবং এইভাবে অডিও ডিভাইস ক্লাস মেনে চলে। USB অডিও ক্লাস স্পেসিফিকেশনের দুটি সংস্করণ রয়েছে: ক্লাস 1 (UAC1) এবং 2 (UAC2)।
অন্যান্য শ্রেণীর সাথে তুলনা
USB-এ অন্যান্য অনেক ডিভাইস ক্লাস রয়েছে, যার মধ্যে কিছু অডিও ক্লাসের সাথে বিভ্রান্ত হতে পারে। ভর স্টোরেজ ক্লাস (MSC) মিডিয়াতে সেক্টর-ভিত্তিক অ্যাক্সেসের জন্য ব্যবহৃত হয়, যখন মিডিয়া ট্রান্সফার প্রোটোকল (MTP) মিডিয়াতে সম্পূর্ণ ফাইল অ্যাক্সেসের জন্য ব্যবহৃত হয়। MSC এবং MTP উভয়ই অডিও ফাইল স্থানান্তরের জন্য ব্যবহার করা যেতে পারে, তবে শুধুমাত্র USB অডিও ক্লাস রিয়েল-টাইম স্ট্রিমিংয়ের জন্য উপযুক্ত।
অডিও টার্মিনাল
একটি অডিও পেরিফেরালের টার্মিনালগুলি সাধারণত এনালগ হয়। পেরিফেরালের ইনপুট টার্মিনালে উপস্থাপিত অ্যানালগ সংকেত একটি এনালগ-টু-ডিজিটাল রূপান্তরকারী (ADC) দ্বারা ডিজিটাল রূপান্তরিত হয় এবং হোস্ট দ্বারা গ্রাস করার জন্য USB প্রোটোকলের মাধ্যমে বহন করা হয়। ADC হোস্টের জন্য একটি ডেটা উৎস । একইভাবে, হোস্ট ইউএসবি প্রোটোকলের মাধ্যমে পেরিফেরালে একটি ডিজিটাল অডিও সংকেত পাঠায়, যেখানে একটি ডিজিটাল-টু-অ্যানালগ কনভার্টার (DAC) রূপান্তর করে এবং একটি এনালগ আউটপুট টার্মিনালে উপস্থাপন করে। DAC হোস্টের জন্য একটি সিঙ্ক ।
চ্যানেল
অডিও ফাংশন সহ একটি পেরিফেরাল একটি সোর্স টার্মিনাল, সিঙ্ক টার্মিনাল বা উভয়ই অন্তর্ভুক্ত করতে পারে। প্রতিটি দিক একটি চ্যানেল ( মনো ), দুটি চ্যানেল ( স্টেরিও ), বা আরও বেশি হতে পারে। দুইটির বেশি চ্যানেলের পেরিফেরালকে মাল্টিচ্যানেল বলে। একটি স্টেরিও স্ট্রীমকে বাম এবং ডান চ্যানেলের সমন্বয়ে ব্যাখ্যা করা সাধারণ, এবং এক্সটেনশনের মাধ্যমে একটি মাল্টিচ্যানেল স্ট্রীমকে প্রতিটি চ্যানেলের সাথে সংশ্লিষ্ট স্থানিক অবস্থান হিসাবে ব্যাখ্যা করা সাধারণ। যাইহোক, এটিও বেশ উপযুক্ত (বিশেষত HDMI এর চেয়ে USB অডিওর জন্য) প্রতিটি চ্যানেলে কোনো নির্দিষ্ট মান স্থানিক অর্থ বরাদ্দ না করা। এই ক্ষেত্রে, প্রতিটি চ্যানেল কীভাবে ব্যবহার করা হয় তা নির্ধারণ করা অ্যাপ্লিকেশন এবং ব্যবহারকারীর উপর নির্ভর করে। উদাহরণস্বরূপ, একটি চার-চ্যানেল ইউএসবি ইনপুট স্ট্রীমে প্রথম তিনটি চ্যানেল একটি রুমের মধ্যে বিভিন্ন মাইক্রোফোনের সাথে সংযুক্ত থাকতে পারে এবং চূড়ান্ত চ্যানেলটি একটি এএম রেডিও থেকে ইনপুট গ্রহণ করে।
আইসোক্রোনাস ট্রান্সফার মোড
ইউএসবি অডিও তার রিয়েল-টাইম বৈশিষ্ট্যের জন্য আইসোক্রোনাস ট্রান্সফার মোড ব্যবহার করে, ত্রুটি পুনরুদ্ধারের খরচে। আইসোক্রোনাস মোডে, ব্যান্ডউইথ নিশ্চিত করা হয় এবং সাইক্লিক রিডানডেন্সি চেক (CRC) ব্যবহার করে ডেটা ট্রান্সমিশন ত্রুটি সনাক্ত করা হয়। কিন্তু ত্রুটির ক্ষেত্রে কোনো প্যাকেট স্বীকৃতি বা পুনরায় সংক্রমণ নেই।
আইসোক্রোনাস ট্রান্সমিশন প্রতিটি স্টার্ট অফ ফ্রেম (এসওএফ) সময়কালে ঘটে। SOF সময়কাল পূর্ণ-গতির জন্য এক মিলিসেকেন্ড এবং উচ্চ-গতির জন্য 125 মাইক্রোসেকেন্ড। প্রতিটি পূর্ণ-গতির ফ্রেম 1023 বাইট পর্যন্ত পেলোড বহন করে এবং একটি উচ্চ-গতির ফ্রেম 1024 বাইট পর্যন্ত বহন করে। এগুলিকে একসাথে রেখে, আমরা সর্বাধিক স্থানান্তর হার গণনা করি 1,023,000 বা 8,192,000 বাইট প্রতি সেকেন্ডে৷ এটি সম্মিলিত অডিও নমুনা হার, চ্যানেল গণনা এবং বিট গভীরতার উপর একটি তাত্ত্বিক উচ্চ সীমা সেট করে। ব্যবহারিক সীমা কম।
আইসোক্রোনাস মোডের মধ্যে, তিনটি উপ-মোড রয়েছে:
- অভিযোজিত
- অ্যাসিঙ্ক্রোনাস
- সিঙ্ক্রোনাস
অভিযোজিত সাব-মোডে, পেরিফেরাল সিঙ্ক বা উৎস হোস্টের সম্ভাব্য পরিবর্তিত নমুনা হারের সাথে খাপ খায়।
অ্যাসিঙ্ক্রোনাস (এছাড়াও অন্তর্নিহিত প্রতিক্রিয়া বলা হয়) সাব-মোডে, সিঙ্ক বা উত্স নমুনা হার নির্ধারণ করে এবং হোস্ট মিটমাট করে। অ্যাসিঙ্ক্রোনাস সাব-মোডের প্রাথমিক তাত্ত্বিক সুবিধা হল যে উৎস বা সিঙ্ক ইউএসবি ঘড়ি শারীরিকভাবে এবং বৈদ্যুতিকভাবে DAC বা ADC চালিত ঘড়ির কাছাকাছি (এবং প্রকৃতপক্ষে একই হতে পারে, বা থেকে উদ্ভূত)। এই প্রক্সিমিটির অর্থ হল অ্যাসিঙ্ক্রোনাস সাব-মোড ঘড়ির ঝাপটায় কম সংবেদনশীল হওয়া উচিত। উপরন্তু, DAC বা ADC দ্বারা ব্যবহৃত ঘড়িটি হোস্ট ঘড়ির তুলনায় উচ্চ নির্ভুলতা এবং নিম্ন প্রবাহের জন্য ডিজাইন করা হতে পারে।
সিঙ্ক্রোনাস সাব-মোডে, প্রতিটি SOF পিরিয়ডে একটি নির্দিষ্ট সংখ্যক বাইট স্থানান্তর করা হয়। অডিও নমুনা হার কার্যকরভাবে USB ঘড়ি থেকে প্রাপ্ত করা হয়. সিঙ্ক্রোনাস সাব-মোড সাধারণত অডিওর সাথে ব্যবহার করা হয় না কারণ হোস্ট এবং পেরিফেরাল উভয়ই USB ঘড়ির করুণায় থাকে।
নীচের টেবিলটি আইসোক্রোনাস সাব-মোডগুলিকে সংক্ষিপ্ত করে:
উপ-মোড | বাইট গণনা প্যাকেট প্রতি | নমুনা হার দ্বারা নির্ধারিত | অডিও জন্য ব্যবহৃত |
---|---|---|---|
অভিযোজিত | পরিবর্তনশীল | হোস্ট | হ্যাঁ |
অ্যাসিঙ্ক্রোনাস | পরিবর্তনশীল | পেরিফেরাল | হ্যাঁ |
সিঙ্ক্রোনাস | স্থির | ইউএসবি ঘড়ি | না |
অনুশীলনে, সাব-মোড অবশ্যই গুরুত্বপূর্ণ, তবে অন্যান্য কারণগুলিও বিবেচনা করা উচিত।
ইউএসবি অডিও ক্লাসের জন্য অ্যান্ড্রয়েড সমর্থন
উন্নয়ন মোড
ইউএসবি অডিও ডেভেলপমেন্ট মোডে সমর্থিত নয়।
হোস্ট মোড
Android 5.0 (API স্তর 21) এবং তার উপরে USB অডিও ক্লাস 1 (UAC1) বৈশিষ্ট্যগুলির একটি উপসেট সমর্থন করে:
- অ্যান্ড্রয়েড ডিভাইস অবশ্যই হোস্ট হিসাবে কাজ করবে
- অডিও বিন্যাস PCM হতে হবে (ইন্টারফেস টাইপ I)
- বিট গভীরতা 16-বিট, 24-বিট বা 32-বিট হতে হবে যেখানে 24 বিট দরকারী অডিও ডেটা 32-বিট শব্দের সবচেয়ে উল্লেখযোগ্য বিটের মধ্যে বাম-ন্যায্যতাযুক্ত।
- নমুনা হার অবশ্যই 48, 44.1, 32, 24, 22.05, 16, 12, 11.025, বা 8 kHz হতে হবে
- চ্যানেলের সংখ্যা অবশ্যই 1 (মনো) বা 2 (স্টিরিও) হতে হবে
অ্যান্ড্রয়েড ফ্রেমওয়ার্ক সোর্স কোডের পর্যালোচনা এই বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য প্রয়োজনীয় ন্যূনতম প্রয়োজনের বাইরে অতিরিক্ত কোড দেখাতে পারে। কিন্তু এই কোডটি যাচাই করা হয়নি, তাই আরও উন্নত বৈশিষ্ট্য এখনও দাবি করা হয়নি।
আনুষঙ্গিক মোড
Android 4.1 (API লেভেল 16) হোস্টে অডিও প্লেব্যাকের জন্য সীমিত সমর্থন যোগ করেছে। আনুষঙ্গিক মোডে থাকাকালীন, Android স্বয়ংক্রিয়ভাবে তার অডিও আউটপুটকে USB-এ রুট করে। অর্থাৎ, অ্যান্ড্রয়েড ডিভাইস হোস্টের কাছে ডেটা উৎস হিসেবে কাজ করে, উদাহরণস্বরূপ একটি ডক।
আনুষঙ্গিক মোড অডিও এই বৈশিষ্ট্য আছে:
- অ্যান্ড্রয়েড ডিভাইসটি অবশ্যই একজন জ্ঞানী হোস্ট দ্বারা নিয়ন্ত্রিত হতে হবে যা প্রথমে অ্যান্ড্রয়েড ডিভাইসটিকে ডেভেলপমেন্ট মোড থেকে আনুষঙ্গিক মোডে স্থানান্তর করতে পারে এবং তারপর হোস্টকে অবশ্যই উপযুক্ত এন্ডপয়েন্ট থেকে অডিও ডেটা স্থানান্তর করতে হবে। এইভাবে অ্যান্ড্রয়েড ডিভাইস হোস্টের কাছে "চালকবিহীন" প্রদর্শিত হয় না।
- দিকটি অবশ্যই ইনপুট হতে হবে, হোস্টের সাপেক্ষে প্রকাশ করা হবে
- অডিও ফরম্যাট 16-বিট PCM হতে হবে
- নমুনা হার 44.1 kHz হতে হবে
- চ্যানেলের সংখ্যা 2 হতে হবে (স্টিরিও)
আনুষঙ্গিক মোড অডিও ব্যাপকভাবে গৃহীত হয় নি, এবং বর্তমানে নতুন ডিজাইনের জন্য সুপারিশ করা হয় না।
ইউএসবি ডিজিটাল অডিও অ্যাপ্লিকেশন
নামটি ইঙ্গিত করে, ইউএসবি ডিজিটাল অডিও সিগন্যালটি সাধারণ TRS মিনি হেডসেট সংযোগকারী দ্বারা ব্যবহৃত অ্যানালগ সংকেতের পরিবর্তে একটি ডিজিটাল ডেটা স্ট্রিম দ্বারা উপস্থাপিত হয়। অবশেষে যে কোনো ডিজিটাল সংকেত শোনার আগে অ্যানালগে রূপান্তর করতে হবে। সেই রূপান্তরটি কোথায় রাখবেন তা বেছে নেওয়ার ক্ষেত্রে ট্রেডঅফ রয়েছে।
দুটি DAC-এর গল্প
নীচের উদাহরণের চিত্রে, আমরা দুটি ডিজাইনের তুলনা করি। প্রথমে আমাদের কাছে অ্যাপ্লিকেশন প্রসেসর (AP), অন-বোর্ড DAC, পরিবর্ধক এবং এনালগ TRS সংযোগকারী হেডফোনের সাথে সংযুক্ত একটি মোবাইল ডিভাইস রয়েছে। আমরা বাহ্যিক USB DAC এবং পরিবর্ধক, এছাড়াও হেডফোন সহ USB যুক্ত একটি মোবাইল ডিভাইস বিবেচনা করি৷
![DAC তুলনা](https://source.android.com/static/docs/core/audio/images/dac.png?authuser=0&hl=bn)
চিত্র 3. দুটি DAC-এর তুলনা
কোন নকশা ভাল? উত্তর আপনার প্রয়োজনের উপর নির্ভর করে। প্রতিটি সুবিধা এবং অসুবিধা আছে.
দ্রষ্টব্য: এটি একটি কৃত্রিম তুলনা, যেহেতু একটি বাস্তব অ্যান্ড্রয়েড ডিভাইসে সম্ভবত উভয় বিকল্প উপলব্ধ থাকবে।
প্রথম ডিজাইন Aটি সহজ, কম ব্যয়বহুল, কম শক্তি ব্যবহার করে এবং অন্যথায় সমানভাবে নির্ভরযোগ্য উপাদান অনুমান করে এটি আরও নির্ভরযোগ্য ডিজাইন হবে। যাইহোক, সাধারণত অডিও মানের ট্রেডঅফ বনাম অন্যান্য প্রয়োজনীয়তা আছে। উদাহরণস্বরূপ, যদি এটি একটি গণ-বাজার ডিভাইস হয়, তবে এটি অডিওফাইলের জন্য নয়, সাধারণ ভোক্তার প্রয়োজনের জন্য ডিজাইন করা যেতে পারে।
দ্বিতীয় ডিজাইনে, এক্সটার্নাল অডিও পেরিফেরাল সি-কে উচ্চতর অডিও কোয়ালিটি এবং বৃহত্তর পাওয়ার আউটপুটের জন্য ডিজাইন করা যেতে পারে বেসিক ভর বাজারের অ্যান্ড্রয়েড ডিভাইস B-এর খরচের উপর প্রভাব না ফেলে। হ্যাঁ, এটি আরও ব্যয়বহুল ডিজাইন, কিন্তু খরচ শুধুমাত্র এর দ্বারা শোষিত হয়। যারা এটা চায়।
মোবাইল ডিভাইসগুলি উচ্চ-ঘনত্বের সার্কিট বোর্ড থাকার জন্য কুখ্যাত, যার ফলে ক্রসস্ট্যাকের আরও সুযোগ হতে পারে যা সংলগ্ন অ্যানালগ সংকেতগুলিকে হ্রাস করে। ডিজিটাল কমিউনিকেশন শব্দের প্রতি কম সংবেদনশীল, তাই DAC কে Android ডিভাইস A থেকে একটি বাহ্যিক সার্কিট বোর্ড C-তে স্থানান্তর করা চূড়ান্ত অ্যানালগ পর্যায়গুলিকে ঘন এবং কোলাহলপূর্ণ সার্কিট বোর্ড থেকে শারীরিক ও বৈদ্যুতিকভাবে বিচ্ছিন্ন করার অনুমতি দেয়, যার ফলে উচ্চতর বিশ্বস্ততা অডিও হয়।
অন্যদিকে, দ্বিতীয় নকশাটি আরও জটিল, এবং অতিরিক্ত জটিলতার সাথে জিনিসগুলি ব্যর্থ হওয়ার আরও সুযোগ আসে। ইউএসবি কন্ট্রোলার থেকে অতিরিক্ত লেটেন্সিও রয়েছে।
হোস্ট মোড অ্যাপ্লিকেশন
সাধারণ ইউএসবি হোস্ট মোড অডিও অ্যাপ্লিকেশন অন্তর্ভুক্ত:
- সঙ্গীত শোনা
- টেলিফোনি
- তাত্ক্ষণিক বার্তা এবং ভয়েস চ্যাট
- রেকর্ডিং
এই সমস্ত অ্যাপ্লিকেশনগুলির জন্য, অ্যান্ড্রয়েড একটি সামঞ্জস্যপূর্ণ USB ডিজিটাল অডিও পেরিফেরাল সনাক্ত করে এবং অডিও নীতির নিয়মের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে অডিও প্লেব্যাক এবং যথাযথভাবে ক্যাপচার করে। পেরিফেরালের প্রথম দুটি চ্যানেলে স্টেরিও বিষয়বস্তু চালানো হয়।
USB ডিজিটাল অডিওর জন্য নির্দিষ্ট কোনো API নেই। উন্নত ব্যবহারের জন্য, স্বয়ংক্রিয় রাউটিং ইউএসবি-সচেতন অ্যাপ্লিকেশনগুলিতে হস্তক্ষেপ করতে পারে। এই জাতীয় অ্যাপ্লিকেশনগুলির জন্য, সেটিংস / বিকাশকারী বিকল্পগুলির মিডিয়া বিভাগে সংশ্লিষ্ট নিয়ন্ত্রণের মাধ্যমে স্বয়ংক্রিয় রাউটিং অক্ষম করুন৷
হোস্ট মোডে থাকাকালীন ডিবাগ করুন
USB হোস্ট মোডে থাকাকালীন, USB এর মাধ্যমে adb ডিবাগিং অনুপলব্ধ৷ একটি বিকল্পের জন্য অ্যান্ড্রয়েড ডিবাগ ব্রিজের ওয়্যারলেস ব্যবহার বিভাগটি দেখুন।
ইউএসবি অডিও প্রয়োগ করুন
অডিও পেরিফেরাল বিক্রেতাদের জন্য সুপারিশ
অ্যান্ড্রয়েড ডিভাইসগুলির সাথে ইন্টার-অপারেটিং করার জন্য, অডিও পেরিফেরাল বিক্রেতাদের উচিত:
- অডিও ক্লাস সম্মতির জন্য নকশা; বর্তমানে অ্যান্ড্রয়েড ক্লাস 1 টার্গেট করে, কিন্তু ক্লাস 2 এর জন্য পরিকল্পনা করা বুদ্ধিমানের কাজ
- quirks এড়িয়ে চলুন
- রেফারেন্স এবং জনপ্রিয় অ্যান্ড্রয়েড ডিভাইসের সাথে ইন্টার-অপারেবিলিটির জন্য পরীক্ষা
- স্পষ্টভাবে সমর্থিত বৈশিষ্ট্য, অডিও ক্লাস সম্মতি, পাওয়ার প্রয়োজনীয়তা ইত্যাদি নথিভুক্ত করুন যাতে গ্রাহকরা জ্ঞাত সিদ্ধান্ত নিতে পারেন
Android ডিভাইস OEM এবং SoC বিক্রেতাদের জন্য সুপারিশ
USB ডিজিটাল অডিও সমর্থন করার জন্য, ডিভাইস OEM এবং SoC বিক্রেতাদের উচিত:
- USB হোস্ট মোড সমর্থন করার জন্য ডিজাইন হার্ডওয়্যার
-
android.hardware.usb.host.xml
বৈশিষ্ট্য পতাকার মাধ্যমে ফ্রেমওয়ার্ক স্তরে জেনেরিক USB হোস্ট সমর্থন সক্ষম করুন - প্রয়োজনীয় সমস্ত কার্নেল বৈশিষ্ট্য সক্রিয় করুন: USB হোস্ট মোড, USB অডিও, আইসোক্রোনাস স্থানান্তর মোড; অ্যান্ড্রয়েড কার্নেল কনফিগারেশন দেখুন
- সাম্প্রতিক কার্নেল রিলিজ এবং প্যাচগুলির সাথে আপ টু ডেট রাখুন; ক্লাস কমপ্লায়েন্সের মহৎ লক্ষ্য থাকা সত্বেও, অডিও পেরিফেরালের সাথে বিরাজমান অডিও পেরিফেরাল আছে, এবং সাম্প্রতিক কার্নেলে এই ধরনের কুইর্কের জন্য সমাধান আছে
- নীচে বর্ণিত হিসাবে USB অডিও নীতি সক্রিয় করুন
- device.mk-এ PRODUCT_PACKAGES-এ audio.usb.default যোগ করুন
- সাধারণ ইউএসবি অডিও পেরিফেরালগুলির সাথে ইন্টার-অপারেবিলিটির জন্য পরীক্ষা
USB অডিও নীতি সক্ষম করুন
USB অডিও সক্ষম করতে, অডিও নীতি কনফিগারেশন ফাইলে একটি এন্ট্রি যোগ করুন। এটি সাধারণত এখানে অবস্থিত:
device/oem/codename/audio_policy.conf
পথনাম উপাদান "oem" যে OEM Android ডিভাইস তৈরি করে তার নামের দ্বারা প্রতিস্থাপিত করা উচিত, এবং "কোডনাম" ডিভাইস কোড নামের দ্বারা প্রতিস্থাপিত করা উচিত।
একটি উদাহরণ এন্ট্রি এখানে দেখানো হয়েছে:
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/
ইউএসবি অডিও HAL অডিও পরিভাষায় বর্ণিত টিনিয়ালসার উপর অনেক বেশি নির্ভর করে। যদিও ইউএসবি অডিও আইসোক্রোনাস ট্রান্সফারের উপর নির্ভর করে, এটি ALSA বাস্তবায়নের মাধ্যমে বিমূর্ত হয়ে যায়। তাই USB অডিও HAL এবং tinyalsa কে USB প্রোটোকলের এই অংশ নিয়ে নিজেদের উদ্বিগ্ন করার দরকার নেই।
USB অডিও পরীক্ষা করুন
ইউএসবি অডিওর জন্য সিটিএস পরীক্ষার তথ্যের জন্য, ইউএসবি অডিও সিটিএস যাচাইকারী পরীক্ষাগুলি দেখুন।