ఈ కథనాన్ని చదవడానికి ముందు, మీరు మునుపటి కథనాన్ని చదవమని సిఫార్సు చేయబడింది:
కొంతమంది వైర్లెస్ హెడ్ఫోన్ వినియోగదారులు ప్రామాణిక SBC బ్లూటూత్ కోడెక్ను ఉపయోగిస్తున్నప్పుడు పేలవమైన ధ్వని నాణ్యత మరియు అధిక పౌనఃపున్యాల కొరతను నివేదిస్తారు, దీనికి అన్ని ఆడియో పరికరాలు మద్దతు ఇస్తాయి. aptX మరియు LDAC కోడెక్లకు మద్దతిచ్చే పరికరాలు మరియు హెడ్ఫోన్లను కొనుగోలు చేయడం ధ్వనిని మెరుగుపరచడానికి ఒక సాధారణ సిఫార్సు. ఈ కోడెక్లకు లైసెన్సింగ్ ఫీజులు అవసరం, కాబట్టి వాటికి మద్దతు ఇచ్చే పరికరాలు చాలా ఖరీదైనవి.
SBC యొక్క తక్కువ నాణ్యత బ్లూటూత్ స్టాక్లు మరియు హెడ్ఫోన్ సెట్టింగ్ల యొక్క కృత్రిమ పరిమితుల కారణంగా ఉందని తేలింది మరియు ఈ పరిమితిని స్మార్ట్ఫోన్ లేదా కంప్యూటర్కు సాఫ్ట్వేర్ మార్పుల ద్వారా ఇప్పటికే ఉన్న ఏవైనా పరికరాల్లో దాటవేయవచ్చు.
కోడెక్ SBC
SBC కోడెక్ అనేక విభిన్న పారామితులను కలిగి ఉంది, అవి కనెక్షన్ సెటప్ దశలో చర్చించబడతాయి. వారందరిలో:
- ఛానెల్ల సంఖ్య మరియు రకం: జాయింట్ స్టీరియో, స్టీరియో, డ్యూయల్ ఛానల్, మోనో;
- ఫ్రీక్వెన్సీ బ్యాండ్ల సంఖ్య: 4 లేదా 8;
- ప్యాకేజీలోని బ్లాక్ల సంఖ్య: 4, 8, 12, 16;
- పరిమాణీకరణ సమయంలో బిట్లను పంపిణీ చేయడానికి అల్గోరిథం: లౌడ్నెస్, SNR;
- పరిమాణీకరణ (బిట్పూల్) సమయంలో ఉపయోగించే బిట్ల పూల్ యొక్క గరిష్ట మరియు కనిష్ట విలువ: సాధారణంగా 2 నుండి 53 వరకు.
డీకోడింగ్ పరికరం తప్పనిసరిగా ఈ పారామితుల కలయికకు మద్దతు ఇవ్వాలి. ఎన్కోడర్ అన్నింటినీ అమలు చేయకపోవచ్చు.
ఇప్పటికే ఉన్న బ్లూటూత్ స్టాక్లు సాధారణంగా కింది ప్రొఫైల్కు అంగీకరిస్తాయి: జాయింట్ స్టీరియో, 8 బ్యాండ్లు, 16 బ్లాక్లు, లౌడ్నెస్, బిట్పూల్ 2..53. ఈ ప్రొఫైల్ 44.1 kHz ఆడియోను 328 kbps బిట్రేట్తో ఎన్కోడ్ చేస్తుంది.
బిట్పూల్ పరామితి నేరుగా ఒక ప్రొఫైల్లోని బిట్రేట్ను ప్రభావితం చేస్తుంది: అది ఎంత ఎక్కువగా ఉంటే, బిట్రేట్ ఎక్కువ, మరియు నాణ్యత.
అయినప్పటికీ, బిట్పూల్ పరామితి నిర్దిష్ట ప్రొఫైల్తో ముడిపడి ఉండదు; బిట్రేట్ ఇతర పారామితుల ద్వారా కూడా ఎక్కువగా ప్రభావితమవుతుంది: ఛానెల్ల రకం, ఫ్రీక్వెన్సీ బ్యాండ్ల సంఖ్య, బ్లాక్ల సంఖ్య. మీరు బిట్పూల్ను మార్చకుండా, ప్రామాణికం కాని ప్రొఫైల్లను అంగీకరించడం ద్వారా పరోక్షంగా బిట్రేట్ని పెంచవచ్చు.
SBC బిట్రేట్ను లెక్కించడానికి సూత్రం
ఉదాహరణకు, డ్యూయల్ ఛానెల్ మోడ్ ఒక్కో ఛానెల్కు మొత్తం బిట్పూల్ను ఉపయోగించి ఛానెల్లను విడిగా ఎన్కోడ్ చేస్తుంది. జాయింట్ స్టీరియోకు బదులుగా డ్యూయల్ ఛానెల్ని ఉపయోగించమని పరికరాన్ని బలవంతం చేయడం ద్వారా, మేము అదే గరిష్ట బిట్పూల్ విలువతో దాదాపు రెట్టింపు బిట్రేట్ను పొందుతాము: 617 kbps.
నా అభిప్రాయం ప్రకారం, సంధి దశలో ప్రొఫైల్తో ముడిపడి ఉండని బిట్పూల్ విలువను ఉపయోగించడం A2DP ప్రమాణంలో లోపం, ఇది SBC నాణ్యత యొక్క కృత్రిమ పరిమితికి దారితీసింది. బిట్పూల్ కంటే బిట్రేట్ను చర్చించడం మరింత సమంజసంగా ఉంటుంది.
ఈ స్థిరమైన Bitpool మరియు Bitrate విలువలు అధిక-నాణ్యత ఆడియో కోసం సిఫార్సు చేయబడిన విలువలతో కూడిన పట్టిక నుండి ఉద్భవించాయి. కానీ ఈ విలువలకు మిమ్మల్ని మీరు పరిమితం చేసుకోవడానికి సిఫార్సు ఒక కారణం కాదు.
2 నుండి 1.2 వరకు సక్రియంగా ఉన్న A2007DP v2015 స్పెసిఫికేషన్, 512 kbps వరకు బిట్రేట్లతో సరిగ్గా పని చేయడానికి అన్ని డీకోడింగ్ పరికరాలు అవసరం:
SNK యొక్క డీకోడర్ గరిష్ట బిట్ రేట్ కంటే ఎక్కువగా ఉండని అన్ని బిట్పూల్ విలువలకు మద్దతు ఇస్తుంది. ఈ ప్రొఫైల్ మోనో కోసం అందుబాటులో ఉన్న గరిష్ట బిట్ రేటును 320kb/sకి మరియు రెండు-ఛానల్ మోడ్ల కోసం 512kb/sకి పరిమితం చేస్తుంది.
స్పెసిఫికేషన్ యొక్క కొత్త వెర్షన్లో బిట్రేట్పై పరిమితి లేదు. EDRకి మద్దతు ఇచ్చే 2015 తర్వాత విడుదలైన ఆధునిక హెడ్ఫోన్లు ≈730 kbps వరకు బిట్ రేట్లను సపోర్ట్ చేయగలవని అంచనా వేయబడింది.
కొన్ని కారణాల వల్ల, నేను పరీక్షించిన Linux (PulseAudio), Android, Blackberry మరియు macOS బ్లూటూత్ స్టాక్లు గరిష్ట బిట్రేట్ను నేరుగా ప్రభావితం చేసే బిట్పూల్ పారామీటర్ యొక్క గరిష్ట విలువపై కృత్రిమ పరిమితులను కలిగి ఉన్నాయి. కానీ ఇది అతిపెద్ద సమస్య కాదు; దాదాపు అన్ని హెడ్ఫోన్లు కూడా గరిష్ట బిట్పూల్ విలువను 53కి పరిమితం చేస్తాయి.
నేను ఇప్పటికే చూసినట్లుగా, చాలా పరికరాలు 551 kbps బిట్రేట్తో సవరించిన బ్లూటూత్ స్టాక్లో అంతరాయాలు లేదా పగుళ్లు లేకుండా ఖచ్చితంగా పని చేస్తాయి. కానీ సాధారణ బ్లూటూత్ స్టాక్లలో సాధారణ పరిస్థితుల్లో అటువంటి బిట్రేట్ ఎప్పుడూ స్థిరంగా ఉండదు.
బ్లూటూత్ స్టాక్ను సవరిస్తోంది
A2DP ప్రమాణానికి అనుకూలంగా ఉండే ఏదైనా బ్లూటూత్ స్టాక్కు డ్యూయల్ ఛానెల్ మోడ్కు మద్దతు ఉంటుంది, అయితే ఇంటర్ఫేస్ నుండి దాన్ని యాక్టివేట్ చేయడం సాధ్యం కాదు.
ఇంటర్ఫేస్కి టోగుల్ని జోడిద్దాం! నేను ఆండ్రాయిడ్ 8.1 మరియు ఆండ్రాయిడ్ 9 కోసం ప్యాచ్లను తయారు చేసాను, ఇవి స్టాక్కు పూర్తి డ్యూయల్ ఛానెల్ సపోర్ట్ను జోడించి, డెవ్ టూల్స్లో మోడ్ టోగుల్ మెనుకి మోడ్ను జోడించి, డ్యూయల్ ఛానెల్-ఎనేబుల్ చేయబడిన SBCలను aptX వంటి అదనపు కోడెక్ లాగా పరిగణిస్తాను. బ్లూటూత్ పరికర సెట్టింగ్లకు చెక్మార్క్ జోడించడం ద్వారా , AAC లేదా LDAC (ఆండ్రాయిడ్ దీన్ని HD ఆడియో అని పిలుస్తుంది). ఇది ఇలా కనిపిస్తుంది:
చెక్బాక్స్ సక్రియం చేయబడినప్పుడు, బ్లూటూత్ ఆడియో బిట్రేట్లో ప్రసారం చేయబడటం ప్రారంభమవుతుంది 551 kbps, హెడ్ఫోన్లు 3 Mbit/s కనెక్షన్ వేగానికి మద్దతిస్తే, లేదా 452 kbps, హెడ్ఫోన్లు 2 Mbit/s మాత్రమే సపోర్ట్ చేస్తే.
ఈ ప్యాచ్ క్రింది ప్రత్యామ్నాయ ఫర్మ్వేర్లలో చేర్చబడింది:
- LineageOS
- పునరుత్థానం రీమిక్స్
- crDroid
551 మరియు 452 kbit/s ఎక్కడ నుండి వచ్చాయి?
బ్లూటూత్ ఎయిర్-షేరింగ్ టెక్నాలజీ పెద్ద స్థిర-పరిమాణ ప్యాకెట్లను సమర్ధవంతంగా ప్రసారం చేయడానికి రూపొందించబడింది. స్లాట్లలో డేటా బదిలీ జరుగుతుంది, ఒక బదిలీలో పంపబడిన అత్యధిక స్లాట్లు 5. 1 లేదా 3 స్లాట్లను ఉపయోగించే బదిలీ మోడ్లు కూడా ఉన్నాయి, కానీ 2 లేదా 4 కాదు. 5 స్లాట్లలో మీరు కనెక్షన్ వేగంతో 679 బైట్ల వరకు బదిలీ చేయవచ్చు. 2 Mbit/s మరియు 1021 Mbit/s వేగంతో 3 బైట్ల వరకు మరియు వరుసగా 3 - 367 మరియు 552 బైట్ల వద్ద.
మేము 679 లేదా 1021 బైట్ల కంటే తక్కువ డేటాను బదిలీ చేయాలనుకుంటే, కానీ 367 లేదా 552 బైట్ల కంటే ఎక్కువ ఉంటే, బదిలీ ఇప్పటికీ 5 స్లాట్లను తీసుకుంటుంది మరియు డేటా అదే సమయంలో బదిలీ చేయబడుతుంది, ఇది బదిలీ సామర్థ్యాన్ని తగ్గిస్తుంది.
డ్యూయల్ ఛానల్ మోడ్లో SBC, Bitpool 44100 పారామీటర్లతో 38 Hz ఆడియో, ఫ్రేమ్కి 16 బ్లాక్లు, 8 ఫ్రీక్వెన్సీ పరిధులు, 164 kbps బిట్రేట్తో ఆడియోను 452 బైట్ ఫ్రేమ్లలోకి ఎన్కోడ్ చేస్తుంది.
ఆడియో తప్పనిసరిగా L2CAP మరియు AVDTP బదిలీ ప్రోటోకాల్లలో ఎన్క్యాప్సులేట్ చేయబడి ఉండాలి, ఇది ఆడియో పేలోడ్ నుండి 16 బైట్లను తీసుకుంటుంది.
అందువలన, 5 స్లాట్లతో కూడిన ఒక బ్లూటూత్ ట్రాన్స్మిషన్ 4 ఆడియో ఫ్రేమ్లను కలిగి ఉంటుంది:
679 (EDR 2 mbit/s DH5) - 4 (L2CAP) - 12 (AVDTP/RTP) - 1 (заголовок SBC) - (164*4) = 6
మేము పంపబడుతున్న ప్యాకెట్లో 11.7 ms ఆడియో డేటాను అమర్చాము, ఇది 3.75 msలో ప్రసారం చేయబడుతుంది మరియు ప్యాకెట్లో 6 ఉపయోగించని బైట్లు మిగిలి ఉన్నాయి.
మీరు బిట్పూల్ను కొద్దిగా పెంచినట్లయితే, ఇకపై 4 ఆడియో ఫ్రేమ్లను ఒక ప్యాకేజీలో ప్యాక్ చేయడం సాధ్యం కాదు. మీరు ఒకేసారి 3 ఫ్రేమ్లను పంపవలసి ఉంటుంది, ఇది ప్రసార సామర్థ్యాన్ని తగ్గిస్తుంది, ఒక్కో ఫ్రేమ్కి ప్రసారం చేయబడిన ఆడియో మొత్తాన్ని తగ్గిస్తుంది మరియు పేలవమైన రేడియో పరిస్థితుల్లో ఆడియో నత్తిగా మాట్లాడటానికి మరింత త్వరగా దారి తీస్తుంది.
అదే విధంగా, EDR 551 Mbit/s కోసం 3 kbit/s బిట్రేట్ ఎంపిక చేయబడింది: Bitpool 47తో, ఫ్రేమ్కి 16 బ్లాక్లు, 8 ఫ్రీక్వెన్సీ పరిధులు, ఫ్రేమ్ పరిమాణం 200 బైట్లు, బిట్రేట్ 551 kbit/s. ఒక ప్యాకేజీలో 5 ఫ్రేమ్లు లేదా 14.6 ms సంగీతం ఉంటుంది.
అన్ని SBC పారామితులను లెక్కించే అల్గోరిథం చాలా క్లిష్టంగా ఉంటుంది, మీరు మాన్యువల్గా లెక్కించినట్లయితే మీరు సులభంగా గందరగోళానికి గురవుతారు, కాబట్టి ఆసక్తి ఉన్నవారికి సహాయం చేయడానికి నేను ఇంటరాక్టివ్ కాలిక్యులేటర్ను తయారు చేసాను:
ఇదంతా ఎందుకు అవసరం?
aptX కోడెక్ యొక్క సౌండ్ క్వాలిటీ గురించి జనాదరణ పొందిన నమ్మకానికి విరుద్ధంగా, కొన్ని ఫైల్లలో ఇది 328 kbps ప్రామాణిక బిట్రేట్తో SBC కంటే అధ్వాన్నమైన ఫలితాలను అందిస్తుంది.
SBC డైనమిక్గా తక్కువ నుండి అధిక ప్రాతిపదికన ఫ్రీక్వెన్సీ బ్యాండ్లకు క్వాంటైజేషన్ బిట్లను కేటాయిస్తుంది. తక్కువ మరియు మధ్య పౌనఃపున్యాల కోసం అన్ని బిట్రేట్లను ఉపయోగించినట్లయితే, అధిక పౌనఃపున్యాలు "కత్తిరించబడతాయి" (బదులుగా నిశ్శబ్దం ఉంటుంది).
aptX అన్ని సమయాలలో ఒకే సంఖ్యలో బిట్లతో ఫ్రీక్వెన్సీ బ్యాండ్లను పరిమాణీకరిస్తుంది, అందుకే ఇది స్థిరమైన బిట్రేట్ను కలిగి ఉంటుంది: 352 kHzకి 44.1 kbps, 384 kHzకి 48 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ని కొట్టే ఆడియోను పొందుతారు. 3 Mbps EDR కనెక్టివిటీకి మద్దతు ఇచ్చే హెడ్ఫోన్లలో, 551 kbps బిట్రేట్ aptX HDతో పోల్చదగిన ధ్వనిని ఉత్పత్తి చేస్తుంది.
మీరు ఇంకా ఎక్కువ చేయగలరా?
Android ప్యాచ్లో 2 Mbps EDR పరికరాల కోసం బిట్రేట్ను మరింత పెంచే ఎంపిక కూడా ఉంది. కష్టతరమైన రేడియో పరిస్థితులలో ప్రసార స్థిరత్వాన్ని తగ్గించే ఖర్చుతో మీరు బిట్రేట్ను 452 kbit/s నుండి 595 kbit/sకి పెంచవచ్చు.
persist.bluetooth.sbc_hd_higher_bitrate వేరియబుల్ని 1కి సెట్ చేస్తే సరిపోతుంది:
# setprop persist.bluetooth.sbc_hd_higher_bitrate 1
తీవ్ర బిట్రేట్ ప్యాచ్ ఇప్పటివరకు LineageOS 15.1లో మాత్రమే స్వీకరించబడింది, కానీ 16.0లో కాదు.
పరికర అనుకూలత
SBC డ్యూయల్ ఛానెల్కు దాదాపు అన్ని హెడ్ఫోన్లు, స్పీకర్లు మరియు కార్ హెడ్ యూనిట్లు మద్దతు ఇస్తున్నాయి. ఇది ఆశ్చర్యం కలిగించదు - ఏదైనా డీకోడింగ్ పరికరాలలో ప్రమాణానికి దాని మద్దతు అవసరం. ఈ మోడ్ సమస్యలను కలిగించే పరికరాలలో తక్కువ సంఖ్యలో ఉన్నాయి, కానీ ఇవి వివిక్త ఉదాహరణలు.
అనుకూల పరికరాల గురించి మరిన్ని వివరాలను ఇక్కడ చూడవచ్చు
ధ్వని వ్యత్యాసాల పోలిక
నేను బ్రౌజర్లోనే నిజ సమయంలో ఆడియోను SBC (అలాగే aptX మరియు aptX HD)కి ఎన్కోడ్ చేసే వెబ్ సేవను తయారు చేసాను. దానితో, మీరు ఏదైనా వైర్డు హెడ్ఫోన్లు, స్పీకర్లు మరియు మీకు ఇష్టమైన సంగీతంలో బ్లూటూత్ ద్వారా ఆడియోను ప్రసారం చేయకుండా, వివిధ SBC ప్రొఫైల్లు మరియు ఇతర కోడెక్ల ధ్వనిని సరిపోల్చవచ్చు మరియు ఆడియో ప్లే చేస్తున్నప్పుడు నేరుగా ఎన్కోడింగ్ పారామితులను కూడా మార్చవచ్చు.
Android డెవలపర్లను సంప్రదించండి
నేను Googleలో చాలా మంది బ్లూటూత్ స్టాక్ డెవలపర్లకు వ్రాశాను, ప్రధాన Android బ్రాంచ్ - AOSPలో ప్యాచ్లను చేర్చమని కోరుతూ, కానీ ఒక్క స్పందన కూడా రాలేదు. నా పాచెస్ ఇన్
గూగుల్లోని డెవలపర్లను సంప్రదించి, ఆండ్రాయిడ్కి SBC HDని తీసుకురావడంలో నేను కొంత సహాయం పొందగలిగితే నేను సంతోషిస్తాను. గెరిట్లోని ప్యాచ్ ఇప్పటికే పాతది (ఇది ప్రారంభ పునర్విమర్శలలో ఒకటి), మరియు డెవలపర్లు నా మార్పులపై ఆసక్తి కలిగి ఉంటే నేను దానిని అప్డేట్ చేస్తాను (దీన్ని అప్డేట్ చేయడం నాకు అంత సులభం కాదు, Android Qకి అనుకూలమైన పరికరాలు నా వద్ద లేవు )
తీర్మానం
LineageOS, Resurrection Remix మరియు crDroid ఫర్మ్వేర్ ఉన్న స్మార్ట్ఫోన్ల వినియోగదారులు ప్రస్తుతం మెరుగైన సౌండ్ క్వాలిటీని ఆస్వాదించగలరు, బ్లూటూత్ పరికర సెట్టింగ్లలో ఎంపికను సక్రియం చేయండి. Linux వినియోగదారులు ఇన్స్టాల్ చేయడం ద్వారా పెరిగిన SBC బిట్రేట్ను కూడా పొందవచ్చు
మూలం: www.habr.com