تقنية الصوت اللاسلكية Bluetooth: أيهما أفضل؟


مع تطور التكنولوجيا ، أصبحت سماعات الرأس التناظرية المعروفة باسم "الأنبوب" في التاريخ - حيث تحل محلها نظيرات البلوتوث اللاسلكية.

تُحرم الهواتف الذكية الحديثة من الموصل المعتاد من أجل حماية الرطوبة والغبار.

يقوم المطورون بإصدار جميع الإصدارات الجديدة من بروتوكول Bluetooth وجميع الإصدارات الجديدة من برامج الترميز ، واعدين "أسرع وأعلى وأقوى" - أقل تأخيرًا في التشغيل ونوعية أفضل.

هل كل شيء جيد جدا؟ لنرى.

مقدمة


لن أتطرق إلى التنفيذ التقني للبروتوكولات ، وكذلك المواصفات المملة. عزيزي ValdikSS ، الذي عمل إلى حد كبير كمصدر إلهام وحتى مستشارًا علميًا في هذه المقالة ، يقوم بإعداد مواد شاملة بخصوص برامج الترميز - وسيتم تقديم كل شيء بمزيد من التفصيل وصحيح تقنيًا.

أريد أن أقول المزيد عن التجربة الشخصية. حسنا ، ممارسة مسلية قليلا (مملة؟).

منذ عام ونصف ، شعرت بالحماس لفكرة aptX. نعم ، قرأت الكثير من المراجعات مثل هذا وأؤمن بكل هذه التحولات والمنعطفات الفنية. ولد طفل - وأردت حقًا مشاهدة العروض مع سماعات في الليل مع زوجتي ، دون أن يحدث ضجيجًا ولا يستيقظ أي شخص في المنزل.

ماذا أدى إلى؟

الجودة


لنبدأ بالأرقام والحقائق (مرحبًا ، ويكيبيديا!)

SBC هو برنامج ترميز قديم جيد ، يتوافق مع معيار A2DP. برنامج الترميز هو نتيجة عمل Frans de Bont (F. de Bont ، M. Groenewegen و W. Oomen ، "نظام ترميز صوتي عالي الجودة بسرعة 128 كيلو بايت / ثانية" ، اتفاقية AES 98 ، 25-28 فبراير 1995) واستخدام الخوارزميات الموضحة في براءة الاختراع EP-0400755B1 . تجدر الإشارة إلى أن مؤلفي البراءة يسمحون باستخدام SBC مجانًا في تطبيق Bluetooth فقط ، ومع ذلك ، فإن براءة الاختراع انتهت في 2 يونيو 2010. نظرًا لأن معيار A2DP شائع جدًا ، فمن الصعب للغاية العثور على سماعات رأس أو مكبرات صوت لا تدعم SBC.

يوفر الكودك تردد أخذ عينات يبلغ 16 و 32 و 44.1 و 48 كيلو هرتز بمعدل تدفق يتراوح بين 10-1500 كيلو بايت / ثانية. نعم سمعت صحيح. ما يصل إلى 1500 كيلو بايت في الثانية. ببساطة لا يوجد حد لمعدل البت في برنامج الترميز. ولكن أكثر على ذلك في وقت لاحق.

تم تطوير برنامج الترميز aptX في عام 1988 في جامعة كوينز بلفاست . نعم ، قبل Bluetooth كان لا يزال هناك حوالي اثني عشر عامًا ، لذلك تم استخدام برنامج الترميز في أجهزة الصوت الاحترافية. تحتفظ كوالكوم حاليًا بالحقوق ، وبالتالي يتطلب الاستخدام ترخيصًا وحقوق ملكية. اعتبارًا من عام 2014 ، كانت التكلفة تقريبًا كالتالي: دفع لمرة واحدة بقيمة 6000 دولار و 1 دولار لكل جهاز تم إصداره للأطراف التي يصل عددها إلى 10000 جهاز. لهذا السبب ، فإن العديد من الأجهزة المزودة بسناب دراغون 835 ، 845 ، 821 ، 820 ، 810 ، 805 ، 801 ، 800 ، 650 ، 615 ، 410 من الرقائق ممكنة تمامًا وتدعم aptX ، لكن لم يتم تفعيلها هناك ، لأنه لم يتم شراء الترخيص. حول هذا الموضوع - أيضا أدناه.

مع عمق بت 16 بت وتردد أخذ العينات يبلغ 48 كيلو هرتز ، يمكن لبرنامج الترميز أن يوفر معدل بتات يبلغ kbit / s (قناة مزدوجة) 384.

قائمة المنتجات التي تدعم رسميا aptX . يمكنك العثور على الكثير من الأنظمة غير المعروفة بدعم aptX على Aliexpress ، لكن كن مستعدًا لحقيقة أنه سيكون هناك في الواقع نفس SBC القديم الجيد - وليس أكثر.

aptX HD - نفس برنامج الترميز ، ولكن مع ملف تعريف تشفير مختلف ، تبلغ سرعة تدفقه 576 kbit / s ، ودعمًا لترددات أخذ العينات تصل إلى 48 كيلو هرتز وعمق البت يصل إلى 24 بت. بعض الناس يطلقون على هذا الكود aptX Lossless - لكن هذا هراء تام ، لأنه فقط في الوقت الحالي من المستحيل تحقيق قيمة الدفق الذي يمكن أن يحمل بيانات ضائعة. تتمثل إحدى ميزات برنامج الترميز هذا في تأخير تشفير قابل للتعديل ، حيث يمكن تقليله إلى 1 مللي ثانية عند تردد أخذ العينات يبلغ 48 كيلو هرتز. كما أن برنامج الترميز مفيد للغاية من وجهة نظر تحميل المعالج ، والذي يعبر عن ميزة مقارنةً بـ MP3 و AAS.

قائمة المنتجات التي تدعم رسميا aptX HD . إنه صغير بما يكفي.

aptX زمن الاستجابة المنخفض (أو LL) هو إصدار خاص من برنامج الترميز يسمح لك بتقليل وقت تأخير الصوت إلى أقل من 40 مللي ثانية. قائمة المنتجات التي تدعم رسميا aptX LL .

الصورة

ها هي ذا. كانت هذه الصورة هي التي اشتريت لي في وقت من الأوقات حشائش. التأخير! بعد كل شيء ، من يريد أن يسمع صوت انفجار في فيلم أكشن ، صراخ وحش في فيلم رعب أو هدير حشد من الناس في مباراة لكرة القدم عندما انتهى كل شيء؟

ولكن هل كل هذا حقا كذلك؟

للأسف ، لا.

كما هو الحال مع أي مادة تسويقية ، تكون الأرقام بعيدة المنال. يعتمد التأخير إلى حد كبير على التخزين المؤقت في تطبيق النظام والترميز. لذلك ، قد يكون التأخير مع SBC أقل من 40 مللي ثانية ، وهو أمر مقبول تمامًا ، نظرًا لمعايير البث التلفزيوني (+40 مللي ... -60 مللي ثانية).

باختصار:

  1. لا يمكن أن يكون أي برنامج ترميز موجود أفضل من التقنية السلكية ، حيث لا يمكن لأي برنامج ترميز تحقيق ضغط حقيقي بلا خسائر.
  2. برنامج الترميز الأكثر شعبية هو SBC. هو الأكثر مرونة في الإعدادات. وعلى الرغم من حقيقة أن aptX قد تم إصداره في وقت سابق ، إلا أنه لم يستطع التغلب على شعبية SBC ، على ما يبدو بسبب كون الأخيرة حرة.
  3. تعتمد جودة الصوت اعتمادًا كبيرًا على تنفيذ برنامج الترميز ، وكذلك على أداء الأجهزة لسماعات الرأس / السماعات بشكل عام - إذا كانت السماعة نفسها ضعيفة ، فلا يمكن تحسين الجودة بواسطة أي برنامج ترميز. لذلك ، في المستقبل ، وبمقارنة الجودة ، سنتحدث عن تشغيل نفس المحتوى من نفس المصدر على نفس السماعات / سماعات الرأس ، ولكن مع برامج الترميز المختلفة.

نتائج عملية وذاتية للغاية




تعتمد المعلومات على الخبرة التي تم ذكرها بالفعل لمدة عام ونصف في تشغيل ومقارنة واستقطاب المستمعين الخارجيين.

تعتمد التجربة على الاستماع إلى ضياع مشغل SONY Walkman NWZ-A17 ، حيث يمكن اختيار برنامج الترميز ، وكذلك على مشاهدة البرامج المختلفة مع إخراج الصوت من خلال Avantree Priva III.

كانت هناك ثلاث سماعات رأس: Sennheiser PMX 60 و Koss Porta Pro و Koss UR-20.

تم استخدام Jabra BT3030 (SBC) و Avantree Clipper Pro (aptX) كمستقبلين للإشارات اللاسلكية.

كما تم استخدام سماعات Voombox Outdoor (SBC) وسماعات Aftershokz Trekz Titanium (aptX) لتوصيل العظام.

تم إيقاف تشغيل جميع المعادلات والمحسنات - وهذا أمر مهم.

المجموع:

  1. جودة الصوت الذي يتم تشغيله باستخدام اتصال سلكي أفضل دائمًا. هذا بلا شك.
  2. يصعب سماع الفرق بين SBC و aptX - وفقط في حالة بعض أنواع الموسيقى. على سبيل المثال ، سمع مؤلف المقال بوضوح الفرق في التشيلو المعزوفات المنفردة في التراكيب الكلاسيكية ، بينما كان الفرق بالنسبة لأجهزة الكمان والأدوات ذات التردد المنخفض أقل وضوحًا. في الأنواع الحديثة - موسيقى البوب ​​والموسيقى الإلكترونية والصخور - لا يُسمع الفرق. في بعض الحالات ، بدا ذاتيًا أن SBC تنقل الصوت بشكل أفضل من aptX.
  3. لا يمكن ملاحظة التأخير بين SBC و aptX إلا ​​إذا كنت تتصل بالمصدر نفسه وأدرجت مستقبلات مختلفة في آذان مختلفة (حسنًا ، القناة اليسرى هي SBC ، والقناة اليمنى هي aptX على سبيل المثال). يكاد يكون من المستحيل رؤية التأخير في الصورة ، ولكن لأن القصة التي تهدف إلى aptX للمشاهد والمحتوى الديناميكي هي خرافة.
  4. كانت المفاجأة ناتجة عن جودة الصوت على Voombox Outdoor الرخيصة وغير الشهيرة. على ما يبدو ، هذا هو التنفيذ الناجح لـ SBC ، والذي تم ذكره أعلاه.
  5. تنفيذ aptX في سماعات الرأس مع التوصيل العظمي أمر غير مفهوم تمامًا - التكنولوجيا محددة للغاية ، وبالتالي فإن فقدان الجودة مهم بسبب التكنولوجيا نفسها. مع الأخذ في الاعتبار النطاق الصغير لـ "نطاق" تشغيل الجهاز ، فإن التنفيذ السيئ للغاية للاقتران مع جهازين يمكنني القول أن شركة Aftershokz هي شركة تستثمر في التسويق أكثر من التطوير.


لا أجادل أنه إذا قمت بتوصيل جميع أنواع أجهزة التحليل الطيفي وما إلى ذلك ، فيمكنك أن ترى الفرق. لكن الأذن البشرية ، والأسوأ من ذلك - الأذن البشرية المتوسطة - ليست جهازًا طيفيًا ، وبالتالي لا تسمع كل هذه الفروق الدقيقة.

الممارسة: تحديد ما يمكن إصلاحه


الجزء 1. بدوره على aptX


كما ذكرنا من قبل ، في بعض الأجهزة ، يتم تعطيل استخدام aptX ، ربما لتجنب الملاحقات القضائية المتعلقة بالبراءات.

يمكن حل هذه المشكلة بكل بساطة عن طريق تحريك جهاز المكتبة لتنفيذ برنامج الترميز وكتابة القدرة على العمل مع برنامج الترميز هذا في build.prop.

يوجد على شبكة الإنترنت عدد كبير من الحلول من هذا النوع. أخذت حرية دمجها في واحدة ، مع إدراكها كوحدة نمطية لـ Magisk. نعم ، يعجبني هذا المشروع حقًا وأعتقد أن تنفيذ التغييرات في النظام في شكل وحدات Magisk هو حل أفضل وأكثر أمانًا مع القدرة على حفظ النظام في شكله الأصلي وبطريقة سهلة للتراجع.

وحدة يمكن تحميلها من هنا . نعم ، أنا أعرف عن جيثب. و لا ، حتى لدي وقت لوضعها هناك.

سيتم محاكاة المدخلات في build.prop ، بما في ذلك aptX ، وإذا أمكن ، aptX HD ، تلقائيًا بواسطة الوحدة النمطية.



الجزء 2. زيادة معدل البت SBC


كما ذكرت سابقا ، برنامج الترميز SBC أساسا لا يوجد لديه قيود معدل البت. ومع ذلك ، عادة ما تحدد الشركات المصنعة حدًا قدره 342 كيلوبت / ثانية للأحادية و 345 كيلوبت / ثانية للاستريو لضمان التشغيل الموثوق به مع جميع أنواع أجهزة الاستقبال.

في الوقت نفسه ، تتطلب مواصفات A2DP v1.2 ، التي كانت نشطة من 2007 إلى 2015 ، أن تعمل جميع أجهزة فك التشفير بشكل صحيح مع معدل البت يصل إلى 320 kbit / s للأحادي و 512 kbit / s في حالة إشارة استريو.

في الإصدار الجديد من المواصفات ، لا يوجد حد لمعدل البت على الإطلاق. من المفترض أن سماعات الرأس الحديثة التي تم إصدارها بعد عام 2015 ودعم EDR يمكنها دعم معدل البت حتى 730 كيلو بت في الثانية.

في الواقع ، هذا بالتأكيد ليس هو الحال. في دراسة مستفيضة أجرتها ValdikSS ، وجد أن جميع أجهزة الاستقبال تقريبًا تعمل بشكل موثوق بمعدلات بت 454 kbit / s ، وعدد كبير إلى حد ما بمعدل بت 507 kbit / s.

في بحثها ، أظهرت ValdikSS أيضًا أنه على عكس الاعتقاد الشائع بجودة الصوت في برنامج ترميز aptX ، فقد ينتج عنه نتائج أسوأ على بعض الملفات من SBC بمعدل بت قياسي يبلغ 328 كيلو بت في الثانية ، والتحول إلى SBC ذي معدل البت العالي ينتج صوتًا يتجاوز في كثير من الأحيان aptX ، على أي سماعات.

بناءً على هذه البيانات ، أرسل ValdikSS تعليقات إلى مطوري Lineage OS و Google ، لكن حتى الآن لم يكن هناك رد فعل.

وبالتالي ، يمكننا فقط إجراء تعديلات على مكدس Bluetooth يدويًا.

نحتاج إلى IDA Pro مع إمكانية فك تشفير ARM وأي محرر HEX (اعتدت WinHEX) وملف bluetooth.default.so من جهازنا. عادة ما يكون موجودًا على المسار / النظام / lib / hw وأقل كثيرًا - أيضًا على المسار / system / lib64 / hw (يلزم الوصول إلى الجذر بالتأكيد).

لذا ، افتح ملف bluetooth.default.so ، فالعمليات والتعديلات الموضحة أدناه تنطبق فقط على رصة Android الأصلية (bluedroid). إذا رأيت سطر "Needed Library" com.qualcomm.qti.bluetooth_audio@1.0.so "أو ما شابه ذلك في IDA Pro ، مع احتمال كبير ، فإن هذه التعليمات لن تساعدك.



مهمتنا الأولى هي استبدال Joint Stereo with Dual Channel بتكوين قياسي.

سنعمل مع وظيفة bta_av_build_src_cfg .

للعثور على هذا الإجراء في المؤسسة الدولية للتنمية ، سوف نستخدم البحث بسطور لرسالة مميزة في سجل التصحيح "Cant parse src cap ret =٪ d" :





نتيجة لذلك ، سرعان ما نجد الوظيفة نفسها في شكل كود:



مهمتنا هي استبدال الهيكل الأصلي للشيكات

if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_JOINT; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO;</code>  <code> if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO; 

هناك عدة طرق للقيام بذلك.

الأول هو استبدال التعليمات TST.W R0 ، رقم 1 لـ TST.W R0 ، # 4 و MOVS R0 ، رقم 1 لـ MOVS R0 ، # 4 في تسلسل الاختبارات:



في bytecode ، هذا هو استبدال x01 إلى x04. من المهم ملاحظة التسلسل المميز للبايت الذي يمكن من خلاله العثور على هذا النمط. دون الخوض في التفاصيل ، سأقول أنه في جوهره هو البحث عن التسلسل

 10 20 8D F8 04 00 9D F8 0D 00 10 F0 01 0F ?? ?? 10 F0 02 0F ?? ?? 10 F0 04 0F ?? ?? 10 F0 08 0F ?? ?? 08 20 ?? ?? 01 20 ?? ?? 02 20 ?? ?? 04 20 

واستبدالها ب

 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? 

ومع ذلك ، فإن هذه الطريقة لها عيوب.

يقوم عدد من المجمعين بتغيير تسلسل تنفيذ الأوامر بناءً على التحسين. وفي هذه الحالة ، لا يمكن العثور على النموذج المرغوب ، وأحيانًا يتم تقديم آلية التحقق في الهيكل بشكل عام في الكود المضمن. لذلك ، فمن الأكثر موثوقية تغيير ثابت btif_av_sbc_default_config .

بالنسبة للمبتدئين - تجد لها. هي في بداية مهمتنا ، لأنه

 void bta_av_build_src_cfg (UINT8 *p_pref_cfg, UINT8 *p_src_cap) { tA2D_SBC_CIE src_cap; tA2D_SBC_CIE pref_cap; UINT8 status = 0; /* initialize it to default SBC configuration */ A2D_BldSbcInfo(AVDT_MEDIA_AUDIO, (tA2D_SBC_CIE *) &btif_av_sbc_default_config, p_pref_cfg); /* now try to build a preferred one */ /* parse configuration */ if ((status = A2D_ParsSbcInfo(&src_cap, p_src_cap, TRUE)) != 0) { APPL_TRACE_DEBUG(" Cant parse src cap ret = %d", status); 

وهنا هي:





يمكن ملاحظة أن btif_av_sbc_default_config في حد ذاته هو سلسلة من البايتات 20 01 10 04 01 35 02 ، في حين أن البايت الأول يشفر تردد أخذ العينات ويمكن أن يكون 10 (48 كيلو هرتز) و 20 (44 كيلو هرتز) ، وبالتالي غير محدد. وبالتالي ، فإن مهمتنا هي استبدال التسلسل
01 10 04 01 35 02
على
04 ?? ?? ?? ?? ??

سيسمح لك ذلك بتغيير منطق البنية بطريقة مماثلة ، لكن في نفس الوقت لن يؤدي تحسين المترجم إلى حدوث مشكلات.

في بعض الحالات ، تبدأ سماعات الرأس أو مكبرات الصوت نفسها الاتصال. في هذه الحالة ، يتم تحديد الوضع بواسطة الدالة bta_av_co_audio_init .

تتميز الوظيفة بالخط "bta_av_co_audio_init:٪ d" ويمكن البحث عنها بسهولة في الكود:


يتم إجراء تعداد أوضاع الاتصال المحتملة في الأمر التالي:

  switch (index) { case BTIF_SV_AV_AA_SBC_INDEX: /* Set up for SBC codec for SRC*/ *p_codec_type = BTA_AV_CODEC_SBC; /* This should not fail because we are using constants for parameters */ A2D_BldSbcInfo(AVDT_MEDIA_AUDIO, (tA2D_SBC_CIE *) &bta_av_co_sbc_caps, p_codec_info); /* Codec is valid */ return TRUE; 

يحتوي bta_av_co_sbc_caps الثابت على البنية التالية :

 const tA2D_SBC_CIE bta_av_co_sbc_caps = { (A2D_SBC_IE_SAMP_FREQ_44), /* samp_freq */ (A2D_SBC_IE_CH_MD_MONO | A2D_SBC_IE_CH_MD_STEREO | A2D_SBC_IE_CH_MD_JOINT | A2D_SBC_IE_CH_MD_DUAL), /* ch_mode */ (A2D_SBC_IE_BLOCKS_16 | A2D_SBC_IE_BLOCKS_12 | A2D_SBC_IE_BLOCKS_8 | A2D_SBC_IE_BLOCKS_4), /* block_len */ (A2D_SBC_IE_SUBBAND_4 | A2D_SBC_IE_SUBBAND_8), /* num_subbands */ (A2D_SBC_IE_ALLOC_MD_L | A2D_SBC_IE_ALLOC_MD_S), /* alloc_mthd */ BTA_AV_CO_SBC_MAX_BITPOOL, /* max_bitpool */ A2D_SBC_IE_MIN_BITPOOL /* min_bitpool */ }; 

يمكن العثور على الثابت بسهولة في الكود ، في حالتي هو 20 0F F0 0C 03 35 02:



انتبه إلى البايت 0F - فهو يوفر القدرة على الاتصال بأي من الأوضاع الصالحة ، منذ ذلك الحين

 x0F = A2D_SBC_IE_CH_MD_MONO | A2D_SBC_IE_CH_MD_STEREO | A2D_SBC_IE_CH_MD_JOINT | A2D_SBC_IE_CH_MD_DUAL = x08 | x02 | x01 | x04 

مهمتنا هي تغيير هذه القيمة على النحو التالي:

 x0F = A2D_SBC_IE_CH_MD_DUAL = x04 

لذلك ، فمن الضروري أن تحل محل

?? 0F F0 0C 03 35 02
على
?? 04 ?? ?? ?? ?? ??

لذلك ، أجبرنا المكدس على الاتصال في وضع القناة المزدوجة في حالة بدء الاتصال من قبل الجهاز ، وفي حالة بدء الاتصال من جانب جانب الإشارة.

أنت الآن بحاجة إلى إزالة القيود المفروضة على معدل البت أو زيادة الحد الأعلى.

تحتاج إلى التعامل مع btif_media_task_get_sbc_rate . وبالمثل ، للبحث عن السطر المميز "بالوعة a2dp غير المكتشفة ، وحصر المعدل إلى٪ d" ، فإننا نبحث عن الوظيفة في الكود:


يتم التعبير عن حد معدل البت في سلسلة
معدل UINT16 = DEFAULT_SBC_BITRATE (والذي بدوره 328 كيلو بت في الثانية )

في الكود ، هو مثل هذا:



قم بتغيير هذه القيمة إلى 454 kbit / s - إنها أعلى من المعيار وتعمل مع الغالبية العظمى من أجهزة الاستقبال. للقيام بذلك ، استبدل البايتات

B1 4F F4 A4 74 ?? E0
على
?? ?? ?? E3 ?? ?? ??

يجب عليك أيضا البحث عن طريق النمط.

E0 4F F4 A4 74 ?? E0
واستبدله بـ
?? ?? ?? E3 ?? ?? ??
- هذا مطلوب لعدد من الأجهزة.

قد تختلف قيمة E3 اعتمادًا على الحد الأقصى لمعدل البت المطلوب:

  • E3 - 454 كيلو بت في الثانية
  • F1 - 482 كيلو بت في الثانية
  • F3 - 486 كيلو بت في الثانية
  • 10 - 576 كيلو بايت في الثانية
  • 48 - بلا حدود

بشكل عام ، يتم تحديد ذلك عن طريق الرمز الفرعي للعملية MOV.W R4 ، XXX.

في الممارسة العملية ، يجدر التجريب واختيار القيمة القصوى التي تستقبل بها جميع أجهزة الاستقبال استقبال إشارة ثابت ، ولا يوجد تشقق أو انقطاع أو تشويه.

على جميع أجهزة الاستقبال في تجربتي (أشرت إليها أعلاه) ، كانت هذه القيمة 576 كيلو بت في الثانية ، وكان هاتف Xiaomi Redmi 4x MIUI10 Android 7.1 هو مصدر الإشارة.

بناءً على الإجراءات الموضحة ، تم إنشاء تصحيح عام يجد الأنماط المحددة في Bluetooth.default.so ويستبدلها؟ بما في ذلك وضع قناة مزدوجة القسري وتحديد الحد الأقصى لمعدل البت إلى 454 كيلو بايت في الثانية. إذا لزم الأمر ، يمكن تغيير قيمة الحد بسهولة بناءً على البحث واستبدال البايتات المقابلة - سيقوم القارئ المهتم بذلك دون صعوبة.

أؤكد: التصحيح يعمل فقط في حالة مكدس bluedroid وعلى الأرجح لن يكون ناجحًا في حالة Fluoride stack و Android الإصدار 8 والإصدارات الأحدث.

يمكن تنزيل التصحيح من هنا .

يوصى بشدة باستبدال الملف الأصلي كوحدات Magisk ، لأنني فعلت هذا على النحو التالي . يرجى ملاحظة : أن هذه الوحدات أنتجت من أجل هاتف Xiaomi Redmi 4x 3/32 GB مع البرنامج الثابت الحالي MIUI 10. الثابت العالمي في وقت كتابة هذا التقرير. في حالتك ، سيتعين استبدال ملف bluetooth.default.so الخاص بك ، كما هو موضح أعلاه. من الممكن أيضًا تكرار الملف على طول المسار / system / lib64 / hw - يعتمد ذلك على طراز البرنامج الثابت وإصدار هاتفك.

هذا النهج باستخدام وحدات Magisk يجعل من السهل تغيير الحد الأقصى لمعدل البت وتعطيل التغييرات بشكل عام إذا تبين أن بعض أجهزة الاستقبال لا تدعم القناة المزدوجة.

الخاتمة


في الوقت الحالي ، في السعي لتحقيق المبيعات ، تقدم العديد من الشركات بعض الابتكارات التكنولوجية كمبرر لسعر أعلى.

في الممارسة العملية ، اتضح أن التكنولوجيات الحالية الأقل تكلفة لم يتم تطويرها بشكل كامل ، وأن الابتكارات التكنولوجية لا يتم تنفيذها بالكامل ، مما يؤثر بشكل كبير على الجودة.

في كثير من الأحيان ، يختبر المستخدمون "تأثير الدواء الوهمي" ، ويقنعون أنفسهم بكمال المنتج فقط لأنه يتم تقديمه بأحدث الألوان أو تقديمها. في الواقع ، هذه الجودة وهمية.

على الرغم من التدهور الواضح في جودة نقل الصوت اللاسلكي مقارنة بالإصدار السلكي ، يبدو أن الشركات المصنعة للأجهزة الحديثة تهدف إلى الانتقال الكامل إلى التقنيات اللاسلكية. في الوقت نفسه ، يتم استخدام الحيل التسويقية لتبرير زيادة الأسعار: الحماية من الانغماس في الماء في الهاتف (كيف يمكنك التحدث تحت الماء؟ لماذا إسقاط الجهاز في الماء؟) ، واستخدام برامج الترميز أكثر تكلفة ، وما إلى ذلك. في الوقت نفسه ، لا يتم استخدام إمكانات برنامج الترميز SBC الشهير الحالي بشكل كامل.

لم نتمكن من الحصول على أي توضيح من Google فيما يتعلق بحد أقصى معدل البت وهو 328 كيلو بايت في الثانية ، ولا القضاء على هذا الحد وإضافة خيار تمكين القناة المزدوجة في قائمة Bluetooth من مطوري Lineage OS.

شكرا لكل من قرأ حتى النهاية!

بعض الاستمرار الناتج عن المناقشة في التعليقات ومساحة تتعلق بترميز LDAC هنا .

Source: https://habr.com/ru/post/ar433502/


All Articles