কম্পিউটার

দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

সতর্কতা:এটি একটি অত্যন্ত উন্নত নির্দেশিকা যা Android-এ আপনার ব্লুটুথ স্ট্যাকগুলিকে সংশোধন করে – এই নির্দেশিকাটি সম্পূর্ণভাবে পড়ুন এবং প্রদত্ত সমস্ত নির্দেশাবলী অনুসরণ করুন৷

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

এই কারণেই কিছু নির্মাতারা AptX এবং LDAC কোডেকগুলিকে প্রমিত SBC ব্লুটুথ কোডেকের উপর শব্দের গুণমান উন্নত করতে দিচ্ছেন যা সমস্ত হেডফোন এবং বেশিরভাগ ব্লুটুথ ডিভাইস দ্বারা সমর্থিত – তবে, aptX এবং LDAC কোডেক সহ ডিভাইসগুলি অনেক বেশি ব্যয়বহুল কারণ এই কোডেকগুলি লাইসেন্সিং ফি প্রয়োজন, যা ভোক্তা দীর্ঘমেয়াদে পরিশোধ করে।

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

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

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

এই গাইডের এই শেষে অনেক জনপ্রিয় অ্যান্ড্রয়েড ডিভাইসের জন্য প্রি-প্যাচ করা ব্লুটুথ স্ট্যাকের একটি তালিকা রয়েছে – এগুলি পুনরুদ্ধারে ফ্ল্যাশ করা যেতে পারে যেমন আপনি অন্য যেকোনও ফ্ল্যাশযোগ্য .zip-এর মতো ডিভাইসগুলির মধ্যে কোনওটিই আপনার না থাকলে, আপনার কাছে থাকবে। অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি পরিবর্তন করার জন্য নির্দেশিকা অনুসরণ করতে৷

SBC কোডেক সম্পর্কে সংক্ষিপ্ত প্রযুক্তিগত তথ্য

SBC এর অনেকগুলি বিভিন্ন প্যারামিটার রয়েছে যা সংযোগ সেটআপ পর্বের সময় আলোচনা করা হয়:

  • অডিও চ্যানেলের ধরন এবং নম্বর:জয়েন্ট স্টেরিও, স্টেরিও, ডুয়াল চ্যানেল, মনো;
  • ফ্রিকোয়েন্সি ব্যান্ডের সংখ্যা:4 বা 8;
  • এক প্যাকেটে অডিও ব্লকের সংখ্যা:4, 8, 12, 16;
  • কোয়ান্টাইজেশন বিট অ্যালোকেশন অ্যালগরিদম:লাউডনেস, SNR;
  • সর্বোচ্চ এবং সর্বনিম্ন বিট পুল পরিমাপকরণ প্রক্রিয়ায় ব্যবহৃত হয়:সাধারণত 2-53।

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

বিদ্যমান ব্লুটুথ স্ট্যাকগুলি সাধারণত নিম্নলিখিত প্রোফাইলে আলোচনা করে:জয়েন্ট স্টেরিও, 8 ব্যান্ড, 16 ব্লক, লাউডনেস, বিটপুল 2..53। এই প্রোফাইলটি 328 kbps এর বিটরেট সহ 44.1 kHz অডিও এনকোড করে৷

বিটপুল প্যারামিটার একই প্রোফাইলের মধ্যে বিটরেটকে সরাসরি প্রভাবিত করে:এটি যত বেশি, বিটরেট তত বেশি এবং সেই কারণে গুণমান।

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

উদাহরণস্বরূপ, ডুয়াল চ্যানেল প্রতিটি চ্যানেলের জন্য সম্পূর্ণ বিটপুল ব্যবহার করে চ্যানেলগুলিকে আলাদাভাবে এনকোড করে। জয়েন্ট স্টেরিওর পরিবর্তে ডিভাইসটিকে ডুয়াল চ্যানেল ব্যবহার করতে বাধ্য করা হলে আমরা একই সর্বোচ্চ বিটপুল, 617 kbps-তে প্রায় দ্বিগুণ বিটরেট পাব।

আমার কাছে এটা মনে হয় যে বিটপুল একটি অভ্যন্তরীণ পরিবর্তনশীল হওয়া উচিত। এটি একটি A2DP স্পেসিফিকেশন ডিজাইনের ত্রুটি যে বিটপুল মান অন্যান্য কোডেক প্যারামিটারের সাথে আবদ্ধ নয় এবং শুধুমাত্র একটি বিশ্বব্যাপী মান হিসাবে সংজ্ঞায়িত করা হয়েছে৷

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

A2DP স্পেসিফিকেশন v1.2, যা 2007 থেকে 2015 পর্যন্ত সক্রিয় ছিল, সমস্ত ডিকোডারকে 512 kbps পর্যন্ত বিটরেটের সাথে সঠিকভাবে কাজ করতে হবে:

SNK-এর ডিকোডার সমস্ত সম্ভাব্য বিটপুল মানগুলিকে সমর্থন করবে যার ফলে সর্বাধিক বিট রেট বেশি হয় না। এই প্রোফাইলটি মনোর জন্য উপলব্ধ সর্বোচ্চ বিট রেট 320kb/s এবং দুই-চ্যানেল মোডের জন্য 512kb/s-এ সীমাবদ্ধ করে৷

স্পেসিফিকেশনের নতুন সংস্করণে কোন বিটরেট সীমাবদ্ধতা নেই। 2015 সালের পরে প্রকাশিত আধুনিক হেডফোনগুলি 1000 kbps পর্যন্ত বিটরেট সমর্থন করতে পারে বলে ধারণা করা হয় .

কিছু কারণে, বর্তমানে সমস্ত পরীক্ষিত ব্লুটুথ স্ট্যাকগুলিতে (লিনাক্স (পালসঅডিও), অ্যান্ড্রয়েড, ব্ল্যাকবেরি এবং ম্যাকওএস) সর্বাধিক বিটপুল প্যারামিটারের কৃত্রিম সীমাবদ্ধতা রয়েছে, যা সরাসরি সর্বাধিক বিটরেটকে প্রভাবিত করে৷ তবে এটি সবচেয়ে বড় সমস্যা নয়, প্রায় সব হেডফোনই সর্বোচ্চ বিটপুল মান 53-এ সীমাবদ্ধ করে।

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

****নিচের নির্দেশিকা ব্যবহার করে পরীক্ষার জন্য প্রয়োজনীয়: bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso.torrent

কিভাবে পিসিতে পরীক্ষা করবেন

উচ্চ বিটরেট SBC হেডফোন সামঞ্জস্য পরীক্ষা একটি ব্লুটুথ অ্যাডাপ্টারের সাথে পিসিতে সম্পাদন করা সবচেয়ে সহজ। আমি একটি পরিবর্তিত ব্লুটুথ স্ট্যাকের সাথে উবুন্টু ইমেজ প্রস্তুত করেছি, যা ভার্চুয়াল মেশিনের মতো চালানো যেতে পারে (ভার্চুয়াল মেশিনের ভিতরে একটি USB ডিভাইস হিসাবে ব্লুটুথ অ্যাডাপ্টার সংযোগ করে, এটি ল্যাপটপে তৈরি অ্যাডাপ্টারের সাথেও কাজ করে) বা এটি থেকে বুট করার মাধ্যমে ইউএসবি ফ্ল্যাশ ড্রাইভ। এই ছবিটি নিম্নলিখিত প্রোফাইল ব্যবহার করে:ডুয়াল চ্যানেল, 8 ব্যান্ড, 16 ব্লক, লাউডনেস, বিটপুল 2..41, 44.1 kHz, যা 485 kbps বিটরেট প্রদান করে।

একটি VM এ চলছে

  • ভার্চুয়ালবক্স এবং ভার্চুয়ালবক্স এক্সটেনশন প্যাক ডাউনলোড করুন:https://www.virtualbox.org/wiki/Downloads;
  • ভার্চুয়ালবক্স ইনস্টল করুন, এটি শুরু করুন;
  • ফাইল → পছন্দ → এক্সটেনশন ব্যবহার করে এক্সটেনশন প্যাক ইনস্টল করুন;
  • নতুন ভার্চুয়াল মেশিন তৈরি করুন:Linux, Ubuntu (64-bit), 1024 RAM। একটি HDD তৈরি করবেন না।
  • ভার্চুয়াল মেশিন সেটিংসে নেভিগেট করুন, স্টোরেজে কন্ট্রোলার চয়ন করুন:IDE, খালি, CD আইকন টিপুন → ভার্চুয়াল অপটিক্যাল ডিস্ক ফাইল চয়ন করুন;
  • ডাউনলোড করা Bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso নির্বাচন করুন;
  • সেটিংস উইন্ডোটি সংরক্ষণ করুন এবং বন্ধ করুন, ভার্চুয়াল মেশিন শুরু করুন;
  • নীচে ডানদিকে USB কেবল আইকনে ডান-ক্লিক করুন, আপনার ব্লুটুথ অ্যাডাপ্টার নির্বাচন করুন;

পিসিতে চলছে

ছবিটি BIOS/CSM এবং UEFI বুটিং সমর্থন করে।

  • ইচার ব্যবহার করে একটি USB ফ্ল্যাশ ড্রাইভে ছবিটি বার্ন করুন:https://www.balena.io/etcher/। এই অপারেশনটি একটি USB ড্রাইভে বিদ্যমান সমস্ত ফাইল মুছে ফেলবে৷
  • পিসি বন্ধ করুন;
  • ইউএসবি ফ্ল্যাশ ড্রাইভ ঢোকান, পিসি চালু করুন এবং বুট অর্ডার বোতাম টিপুন (সাধারণত Esc বা F12);
  • আপনার USB ফ্ল্যাশ ড্রাইভ নির্বাচন করুন৷

পরীক্ষা করা হচ্ছে

  • (ঐচ্ছিক কিন্তু প্রস্তাবিত) ডেস্কটপে “Btsnoop Dump” স্ক্রিপ্টে ডাবল ক্লিক করুন। এটি পরবর্তী বিশ্লেষণের জন্য ব্লুটুথ ডেটা ক্যাপচার শুরু করবে। টার্মিনাল উইন্ডো বন্ধ করবেন না।
  • হেডফোনগুলিকে পেয়ারিং মোডে স্যুইচ করুন;
  • উপরের ডান কোণায় তীরটিতে ক্লিক করুন, ব্লুটুথ আইকন → ব্লুটুথ সেটিংস নির্বাচন করুন;
  • আপনার হেডফোন বেছে নিন, পেয়ারিং সম্পূর্ণ না হওয়া পর্যন্ত অপেক্ষা করুন এবং উইন্ডো বন্ধ করুন;
  • উবুন্টু ভলিউম প্রায় 2/3 সেট করুন। এছাড়াও হেডসেট বোতামগুলি ব্যবহার করে ভলিউম হ্রাস করুন কারণ এটি জোড়া দেওয়ার পরে খুব জোরে হতে পারে৷
  • "মিউজিক" ফোল্ডার খুলুন, "testrecord1.flac" চালান;
  • (ঐচ্ছিক কিন্তু প্রস্তাবিত) প্লেয়ার বন্ধ করুন, টার্মিনাল উইন্ডো বন্ধ করুন। এটি ডেটা ক্যাপচার বন্ধ করবে৷
  • (ঐচ্ছিক কিন্তু প্রস্তাবিত) ফায়ারফক্স ব্রাউজার খুলুন, ডাটা ডাম্প আপলোড করুন (ডেস্কটপে btsnoop_hci.btsnoop) https://btcodecs.valdikss.org.ru/

আপনি মিউজিক ফোল্ডারে অন্য মিউজিক শুনতে পারেন, অথবা আপনার নিজের আপলোড করতে পারেন;

হেডফোনগুলিতে কোনও ক্র্যাকলিং, অডিও বাধা বা অন্যান্য শব্দ বিকৃতি হওয়া উচিত নয়। আপনি যদি একটি ভাল উচ্চ-মানের শব্দ শুনতে পান, তার মানে আপনার হেডফোনগুলি 485 kbps বিট রেট সহ অডিও সমর্থন করে৷

এন্ড্রয়েড ডিভাইসে কিভাবে পরীক্ষা করবেন

অ্যান্ড্রয়েড স্মার্টফোন বা ট্যাবলেট থেকে পরীক্ষা করার জন্য আপনাকে পরিবর্তিত ব্লুটুথ স্ট্যাক ব্যবহার করতে হবে, যার জন্য রুট বিশেষাধিকার প্রয়োজন৷

অ্যান্ড্রয়েডে ব্লুটুথ ডেটা ডাম্প কীভাবে ক্যাপচার করবেন

  1. ব্লুটুথ বন্ধ করুন;
  2. ডেভেলপার সেটিংসে, "ব্লুটুথ HCI স্নুপ লগ সক্ষম করুন" সুইচ সক্ষম করুন;
  3. ব্লুটুথ চালু করুন, ব্লুটুথ মেনু ব্যবহার করে আপনার হেডসেটের সাথে সংযোগ করুন (এটি গুরুত্বপূর্ণ! স্বয়ংক্রিয় সংযোগের অনুমতি দেবেন না!);
  4. ছোট অডিও নমুনা চালান;
  5. ডেভেলপার সেটিংস খুলুন, "ব্লুটুথ HCI স্নুপ লগ সক্ষম করুন" সুইচটি নিষ্ক্রিয় করুন;
  6. সেখানে /storage/emulated/0/btsnoop_hci.log বা /data/misc/bluetooth/logs/btsnoop_hci.log তৈরি করা উচিত। এটি অনুপস্থিত থাকলে, একটি টেক্সট এডিটর দিয়ে /etc/bluetooth/bt_stack.conf খুলুন এবং BtSnoopFileName বিকল্পে পথটি দেখুন।

হেডফোনগুলিতে কোনও ক্র্যাকলিং, অডিও বাধা বা অন্যান্য শব্দ বিকৃতি হওয়া উচিত নয়। আপনি যদি প্যাচ করা লাইব্রেরির সাথে একটি ভাল উচ্চ-মানের শব্দ শুনতে পান, তার মানে আপনার হেডফোনগুলি 512 kbps বিট রেট সহ অডিও সমর্থন করে৷

সাবধানে উপরের অ্যালগরিদম অনুসরণ করুন. বিশেষ করে, আপনি যদি হেডফোন বন্ধ করে দেন বা পেয়ার করার পরে সংযোগ বিচ্ছিন্ন করেন, তাহলে ব্লুটুথ সেটিংস থেকে ম্যানুয়ালি হেডফোনের সাথে সংযোগ করা গুরুত্বপূর্ণ, স্বয়ংক্রিয় সংযোগের অনুমতি দেবেন না!

যে ডিভাইসগুলি কমপক্ষে 512 kbit/s SBC সমর্থন করে

  • আরো ১টি আইবিফ্রি
  • JBL এভারেস্ট 310
  • জেবিএল এভারেস্ট ৭০০
  • স্কুলক্যান্ডি HESH 3
  • Sony WI-C400
  • Sony MDR-1ABT
  • Sony MDR-ZX770BT
  • Sony MDR-XB650BT
  • Sony MDR-XB950B1
  • Sony SBH50
  • Bluedio T4s (বিটপুল সর্বোচ্চ 39. ডুয়াল চ্যানেল সমর্থন না করার জন্য সাড়া দিন, কিন্তু বাধ্য হলে কাজ করুন, 462 kbit/s। A2DP স্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ নয়।)
  • Bluedio T5 (ডুয়াল চ্যানেল সমর্থন না করার জন্য সাড়া দিন, কিন্তু বাধ্য হলে কাজ করুন। A2DP স্পেসিফিকেশন মেনে চলে না।)
  • Bluedio T6 (ডুয়াল চ্যানেল সমর্থন না করার জন্য প্রতিক্রিয়া জানান, তবে বাধ্য হলে কাজ করুন। A2DP স্পেসিফিকেশনের সাথে সঙ্গতিপূর্ণ নয়। Max 97220 চিপ গ্রহণ করুন।)
  • মার্শাল মেজর II ব্লুটুথ
  • ওভারড্রাইভ RealForce D1
  • এডিফায়ার W830BT
  • DEXP BT-250
  • লজিটেক বিটি অ্যাডাপ্টার
  • নাম অটোমোটিভ হেড ইউনিট (CSR8645 চিপ)
  • Sony DSX-A400BT অটোমোটিভ হেড ইউনিট

512 kbit/s এর বেশি SBC সমর্থন করে এমন ডিভাইসগুলি

  • JBL এভারেস্ট 310 (617-660 kbit/s)
  • Sony WI-C400 (576 kbit/s)
  • Sony MDR-ZX770BT (617-660 kbit/s)
  • মার্শাল মেজর II ব্লুটুথ (617-660 kbit/s)
  • ওভারড্রাইভ RealForce D1 (730 kbit/s, ডুয়াল চ্যানেল, 4 সাবব্যান্ড)

উচ্চতর বিটরেট বা ডুয়াল চ্যানেলের সাথে কাজ করে না এমন ডিভাইসগুলি

  1. হার্পার HB-202 (ক্র্যাকলিংস; বেকেন BK3256 চিপ)
  2. সনি এরিকসন MW600 (উচ্চ ফ্রিকোয়েন্সি বিকৃতি, ক্র্যাকলিংস; 2009 থেকে ডিভাইস)

এটি কেন গুরুত্বপূর্ণ:SBC 328k এবং 485k বনাম aptX

AptX সাউন্ড কোয়ালিটির জনপ্রিয় বিশ্বাসের বিপরীতে, কিছু ক্ষেত্রে এটি স্ট্যান্ডার্ড 328k বিটরেট সহ SBC থেকে খারাপ অডিও কোয়ালিটি তৈরি করতে পারে।

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

aptX ক্রমাগত একই সংখ্যক বিট সহ ফ্রিকোয়েন্সি ব্যান্ডের পরিমাপ করে, যা এটিকে একটি ধ্রুবক বিটরেট কোডেক করে তোলে:44.1 kHz এর জন্য 352 kbps, 48 ​​kHz এর জন্য 384 kbps। এটি ফ্রিকোয়েন্সিগুলিতে "বিট স্থানান্তর" করতে পারে না যা তাদের মধ্যে বেশিরভাগই প্রয়োজন। SBC এর বিপরীতে, aptX ফ্রিকোয়েন্সিগুলিকে "কাট" করবে না, তবে তাদের সাথে কোয়ান্টাইজেশন নয়েজ যোগ করবে, অডিওর গতিশীল পরিসর হ্রাস করবে এবং কখনও কখনও ক্র্যাকলস প্রবর্তন করবে। SBC, বিপরীতে, "বিশদ বিবরণ খায়" - সবচেয়ে শান্ত এলাকাগুলিকে বাতিল করে দেয়৷

গড়ে, SBC 328k-এর তুলনায়, aptX একটি বিস্তৃত ফ্রিকোয়েন্সি পরিসরের সাথে সঙ্গীতে কম বিকৃতি ঘটায়, কিন্তু একটি সংকীর্ণ ফ্রিকোয়েন্সি পরিসর এবং একটি বিস্তৃত গতিশীল পরিসরের সঙ্গীতে SBC 328k কখনও কখনও জয়ী হয়৷

আসুন একটি বিশেষ ক্ষেত্রে, একটি পিয়ানো রেকর্ডিং বিবেচনা করুন। এখানে একটি বর্ণালীগ্রাম:

দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন
সবচেয়ে বেশি শক্তি 0-4 kHz ফ্রিকোয়েন্সিতে থাকে এবং 10 kHz পর্যন্ত স্থায়ী হয়।
ফাইলের aptX ফাইলের স্পেকট্রোগ্রাম দেখতে এইরকম:
দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

এখানে SBC 328k:
দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

এটা দেখা যায় যে SBC 328k পর্যায়ক্রমে 16 kHz এর উপরে পরিসীমা সম্পূর্ণভাবে কেটে দেয় এবং এই মানের নীচের রেঞ্জের জন্য উপলব্ধ সমস্ত বিটরেট ব্যবহার করে। যাইহোক, aptX মানুষের কানের দ্বারা শ্রবণযোগ্য ফ্রিকোয়েন্সি বর্ণালীতে আরও বিকৃতি প্রবর্তন করেছে, যা aptX স্পেকট্রোগ্রাম থেকে বিয়োগ করা আসল স্পেকট্রোগ্রামে দেখা যায় (যত উজ্জ্বল, তত বেশি বিকৃতি):

দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন
যদিও SBC 328k 0 থেকে 10 kHz রেঞ্জের মধ্যে কম বিকৃতি সংকেত চালু করেছে, এবং বাকি গুলি করা হয়েছে:
দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

SBC-এর জন্য বিটরেট 485k ব্যান্ডগুলি না কেটে সম্পূর্ণ ফ্রিকোয়েন্সি রেঞ্জ সংরক্ষণ করার জন্য যথেষ্ট।
দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

এই অডিও নমুনায় SBC 485k 0-15 kHz পরিসরে aptX থেকে অনেক ভালো, এবং একটি ছোট কিন্তু এখনও লক্ষণীয় পার্থক্য সহ - 15-22 kHz এ (গাঢ়, কম বিকৃতি):

দারুণভাবে উন্নত ব্লুটুথ অডিও মানের জন্য অ্যান্ড্রয়েডে ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

উচ্চ-বিটরেট SBC-তে স্যুইচ করলে, আপনি যে কোনো হেডফোনে বেশিরভাগ সময় aptX-এর থেকে উচ্চতর একটি শব্দ পাবেন।

  • original_and_aptx.zip
  • sbc.zip

অ্যান্ড্রয়েড 5 – 7-এ ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

এই পরিবর্তনগুলি স্টক অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাকগুলিতে প্রয়োগ করা উচিত Bluedroid (Android 5) এবং Fluoride (Android 6-7)৷ কোয়ালকম-সংশোধিত স্ট্যাক সমর্থিত নয়।

স্ট্যান্ডার্ড SBC কনফিগারেশনে ডুয়াল চ্যানেল দিয়ে জয়েন্ট স্টেরিও প্রতিস্থাপন করুন

android/platform/external/bluetooth/bluedroid/btif/co/bta_av_co.c:99

কোড:

 const tA2D_SBC_CIE btif_av_sbc_default_config ={BTIF_AV_SBC_DEFAULT_SAMP_FREQ, / * samp_freq * / A2D_SBC_IE_CH_MD_JOINT, / * ch_mode * / A2D_SBC_IE_BLOCKS_16, / * block_len * / A2D_SBC_IE_SUBBAND_8, / * num_subbands * / A2D_SBC_IE_ALLOC_MD_L, / * alloc_mthd * / BTA_AV_CO_SBC_MAX_BITPOOL, / * max_bitpool * / A2D_SBC_IE_MIN_BITPOOL          /* min_bitpool */};

A2D_SBC_IE_CH_MD_JOINT কে A2D_SBC_IE_CH_MD_DUAL দিয়ে প্রতিস্থাপন করুন।

দ্বৈত চ্যানেল অগ্রাধিকার বাড়ান

android/platform/external/bluetooth/bluedroid/btif/co/bta_av_co.c:41

কোড:

    if (src_cap.ch_mode &A2D_SBC_IE_CH_MD_JOINT)        pref_cap.ch_mode =A2D_SBC_IE_CH_MD_JOINT; অন্যথায় যদি (src_cap.ch_mode &A2D_SBC_IE_CH_MD_STEREO)        pref_cap.ch_mode =A2D_SBC_IE_CH_MD_STEREO; অন্যথায় যদি (src_cap.ch_mode &A2D_SBC_IE_CH_MD_DUAL)        pref_cap.ch_mode =A2D_SBC_IE_CH_MD_DUAL; অন্যথায় যদি (src_cap.ch_mode &A2D_SBC_IE_CH_MD_MONO)        pref_cap.ch_mode =A2D_SBC_IE_CH_MD_MONO; যদি A2D_SBC_IE_CH_MD_DUAL দিয়ে শীর্ষে যান।

  1. বিটরেট সীমাবদ্ধতা অক্ষম করুন বা বৃদ্ধি করুন

অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাকের শুধুমাত্র বিটপুল সীমা নয়, বিটরেট সীমাও রয়েছে, 328 kbit/s৷ যদি হেডফোনগুলি সমর্থন করে, উদাহরণস্বরূপ, 48 kHz এর জন্য bitpool 53, Android 328 kbit/s সীমাতে ফিট করতে বিটপুল ডাউন করবে৷ কোডেক আলোচনার পরে এটি ঘটবে, এনকোডিং পর্যায়ে, ব্লুটুথ সেট ক্যাপাবিলিটিস প্যাকেটে বিটপুল মান বিবেচনা করবেন না৷

android/platform/external/bluetooth/bluedroid/btif/src/btif_media_task.c:172

কোড:

#define DEFAULT_SBC_BITRATE 328

512 দিয়ে প্রতিস্থাপন করুন।

  1. (শুধুমাত্র পরীক্ষার জন্য) MTU সীমা নিষ্ক্রিয় করুন।

এটি ~580 kbit/s এর চেয়ে বেশি বিটরেটের জন্য প্রয়োজন।

btif/src/btif_media_task.c:174

কোড:

/* 679 বাইটের 2DH5 পেলোড আকার - (4 বাইট L2CAP হেডার + 12 বাইট AVDTP হেডার) */#define MAX_2MBPS_AVDTP_MTU         663

অ্যান্ড্রয়েড 8 – 9-এ ব্লুটুথ স্ট্যাকগুলি কীভাবে সংশোধন করবেন

এই পরিবর্তনগুলি পরীক্ষা করা হয়নি, কিন্তু কাজ করা উচিত৷

A2DP SBC উৎসে দ্বৈত চ্যানেল সমর্থন যোগ করুন

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:55

কোড:

 / * SBC কি SRC কোডেক ক্ষমতা * / স্ট্যাটিক const tA2DP_SBC_CIE a2dp_sbc_caps ={A2DP_SBC_IE_SAMP_FREQ_44, / * samp_freq * / (A2DP_SBC_IE_CH_MD_MONO | A2DP_SBC_IE_CH_MD_JOINT), / * ch_mode * / (A2DP_SBC_IE_BLOCKS_16 | A2DP_SBC_IE_BLOCKS_12 | A2DP_SBC_IE_BLOCKS_8 | A2DP_SBC_IE_BLOCKS_4), / * block_len * / A2DP_SBC_IE_SUBBAND_8, / * num_subbands * / A2DP_SBC_IE_ALLOC_MD_L, / * alloc_method * / A2DP_SBC_IE_MIN_BITPOOL, / * min_bitpool * / A2DP_SBC_MAX_BITPOOL, / * max_bitpool * / BTAV_A2DP_CODEC_BITS_PER_SAMPLE_16 / * bits_per_sample * /}; 

ch_mode এ A2DP_SBC_IE_CH_MD_DUAL যোগ করুন।

ডিফল্ট কনফিগারে ডুয়াল চ্যানেল দিয়ে জয়েন্ট স্টেরিও প্রতিস্থাপন করুন

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:82

কোড:

 / * ডিফল্ট SBC কোডেক কনফিগারেশন * / const tA2DP_SBC_CIE a2dp_sbc_default_config ={A2DP_SBC_IE_SAMP_FREQ_44, / * samp_freq * / A2DP_SBC_IE_CH_MD_JOINT, / * ch_mode * / A2DP_SBC_IE_BLOCKS_16, / * block_len * / A2DP_SBC_IE_SUBBAND_8, / * num_subbands * / A2DP_SBC_IE_ALLOC_MD_L, / * alloc_method * /     A2DP_SBC_IE_MIN_BITPOOL,          /* min_bitpool */    A2DP_SBC_MAX_BITPOOL,              /* max_bitpool */    BTAV_A2DP_CODEC_BITS_PER_SAMPLE_16 /* bits_per_sample;//* bits_per_sample 

A2DP_SBC_IE_CH_MD_JOINT কে A2DP_SBC_IE_CH_MD_DUAL দিয়ে প্রতিস্থাপন করুন।

ডুয়াল চ্যানেল অগ্রাধিকার বাড়ান

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:1155

কোড:

স্ট্যাটিক বুল select_best_channel_mode(uint8_t ch_mode, tA2DP_SBC_CIE* p_result,     btav_a2dp_codec_config_t                                                                                 p_codec_config) {  যদি (ch_mode &A2DP_SBC_IE_CH_MD_JOBC) A2DP_SBC_IE_CH_MD_JOC_Deal> {MD_JOT_RES_DE_IN_T_RES={101} p_codec_config->channel_mode =BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; সত্য ফিরে }  যদি (ch_mode &A2DP_SBC_IE_CH_MD_STEREO) {    p_result->ch_mode =A2DP_SBC_IE_CH_MD_STEREO; p_codec_config->channel_mode =BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; সত্য ফিরে }  যদি (ch_mode &A2DP_SBC_IE_CH_MD_DUAL) {    p_result->ch_mode =A2DP_SBC_IE_CH_MD_DUAL; p_codec_config->channel_mode =BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; সত্য ফিরে }  যদি (ch_mode &A2DP_SBC_IE_CH_MD_MONO) {    p_result->ch_mode =A2DP_SBC_IE_CH_MD_MONO; p_codec_config->channel_mode =BTAV_A2DP_CODEC_CHANNEL_MODE_MONO; সত্য ফিরে }  ফেরত মিথ্যা; }

A2DP_SBC_IE_CH_MD_DUAL থাকলে শীর্ষে সরান।

বিটরেট সীমা বাড়ান

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:42

কোড:

#A2DP_SBC_DEFAULT_BITRATE 328 সংজ্ঞায়িত করুন

512 দিয়ে প্রতিস্থাপন করুন।

  1. (শুধুমাত্র পরীক্ষার জন্য) MTU সীমা নিষ্ক্রিয় করুন

~580 kbit/s এর চেয়ে বেশি বিটরেটের জন্য এটি প্রয়োজন৷

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:47

কোড:

# MAX_2MBPS_AVDTP_MTU 663 সংজ্ঞায়িত করুন

  1. পিসি বা টিভির জন্য স্পিকার হিসাবে অ্যান্ড্রয়েড ফোন কীভাবে ব্যবহার করবেন

  2. Android এর জন্য রোডরানার ইমেল কিভাবে সেটআপ করবেন

  3. Android এ ব্লুটুথ ডিভাইসের ব্যাটারি লেভেল কিভাবে দেখবেন

  4. Android এর জন্য 18 সেরা ফ্রি অডিও এডিটিং অ্যাপ