มาทำความรู้จัก A2DP สำหรับส่งสัญญาณเสียงผ่าน Bluetooth กันเถอะ

bluetooth-a2dp

ด้วยการเข้ามาของสมาร์ทโฟนและแท็บเล็ตในชีวิตประจำวัน ทำให้การฟังเพลงแบบไร้สายผ่านหูฟัง ลำโพง หรือชุดเครื่องเสียงนั้นได้รับความนิยมมากขึ้น หนึ่งในการเชื่อมต่อที่ใช้งานกันมากที่สุด ก็คงหนีไม่พ้น Bluetooth นั่นเอง

วันนี้ RE.V-> จะพาไปทำความรู้จัก A2DP หรือ Advanced Audio Distribution Profile ผู้อยู่เบื้องหลังการเชื่อมต่อนี้กันครับ

ก่อนที่จะไปรู้จัก A2DP เรามารู้จักการทำงานพื้นฐานของ Bluetooth กันก่อนครับ

pic32-bluetooth-audio-software-stack

ที่มา: Microchip

การทำงานของ Bluetooth จะเริ่มต้นจากโปรแกรมหรืองานประยุกต์ (application) นั้น ต้องการใช้งาน Bluetooth ทำงานอะไรสักอย่างหนึ่ง เช่น ส่งข้อมูล ส่งคำสั่งควบคุม ฯลฯ ก็จะเรียกใช้ profile ของงานนั้นขึ้นมา

ตัว profile ของ Bluetooth จะกำหนดขั้นตอนการทำงานและ protocol ที่จะต้องไปติดต่อกับฮาร์ดแวร์ของ Bluetooth ผ่าน Host Controller Interface (HCI) ต่อไป

bluetooth-gavdp

ที่มา: Bluetooth SIG

เมื่อ Application เรียกใช้งาน A2DP นั้น A2DP จะสร้างการเชื่อมต่อและกำหนดค่าที่ต้องใช้ในการส่งข้อมูลเสียงระหว่างอุปกรณ์ต้นทาง (Source) และอุปกรณ์ปลายทาง (Sink) ด้วย Generic Audio/Video Distribution Profile (GAVDP) ซึ่ง A2DP อยู่ภายใต้ profile นี้ส่วนการรับส่งข้อมูลเสียงจะเป็นหน้าที่ของ Audio/Video Distribution Transport Protocol (AVDTP)

ส่วนการส่งคำสั่งควบคุมอุปกรณ์ เช่น การสั่งเล่น หยุด หรือเปลี่ยนเพลง จะเป็นหน้าที่ของ Audio/Video Remote Control Profile (AVRCP) ซึ่งไม่เกี่ยวข้องกับ A2DP ครับ

a2dp-block-diagram

ที่มา: Bluetooth SIG

เมื่อเริ่มต้นส่งข้อมูลเสียงจาก application ที่ Source อาจจะถูกเข้ารหัสให้อยู่ในรูปแบบใหม่ เพื่อให้มีขนาดเล็กลงและให้ Sink สามารถถอดรหัสปลายทางได้ แล้วจึงส่งข้อมูลเสียงให้ AVDTP ทำการส่งไปยัง Sink

ในส่วนการรับข้อมูลที่ฝั่ง Sink นั้น AVDTP จะรับข้อมูลเสียงที่ได้มา แล้วส่งไปยัง application ของฝั่ง Sink ซึ่งอาจจะต้องถอดรหัสของข้อมูลให้อยู่ในรูปแบบที่สามารถใช้งานได้ก่อน

ตามปกติ A2DP จะไม่เข้ารหัสลับให้กับข้อมูลเสียงที่ส่งออกไป แต่ก็สามารถทำได้ตามต้องการ ถ้า Sink สามารถถอดรหัสลับรูปแบบที่ Source ใช้ได้

android-audio-flinger

ที่มา: androidteam

ในทางปฏิบัติ ที่ฝั่ง Source เสียงจากโปรแกรมแต่ละตัว จะเข้ามารวมกันที่ sound server หรือ mixer ของระบบปฏิบัติการในอุปกรณ์ จากนั้น sound server จะติดต่อไปยัง Bluetooth stack ซึ่งเป็นซอฟต์แวร์ที่รวบรวม profile และควบคุมการทำงานของฮาร์ดแวร์ Bluetooth การเข้ารหัสข้อมูลเสียงจะทำบนซอฟต์แวร์ในเครื่อง

ผังด้านบนจะแสดงโครงสร้างระบบเสียงของ Android ซึ่งจะมี AudioFlinger ทำตัวเป็น soundserver ของระบบปฏิบัติการครับ

csr-bluecore-audio-stereo

ที่ฝั่ง sink ซึ่งมักจะเป็นอุปกรณ์พวกหูฟัง ลำโพง หรือเครื่องเสียง มักจะใช้งานชิปเซ็ต Bluetooth ที่มีส่วนให้สามารถเขียนโปรแกรม profile และ codec ลงไปได้ ซึ่งเมื่อได้รับข้อมูลเสียงมาแล้ว ก็จะทำการถอดรหัสข้อมูลเสียงภายในตัวชิปเซ็ต แล้วส่งต่อไปยัง DAC และภาคขยายต่อไป

ผังด้านบนจะแสดงการทำงานของ A2DP ฝั่ง sink แล้วแปลงข้อมูลเสียงดิจิทัลเป็นสัญญาณแอนะล็อกของชิป BlueCore5-Multimedia ของ CSR ซึ่งเป็นชิปที่นิยมใช้งานในตัวรับสัญญาณเสียง และลำโพงไร้สายหลาย ๆ รุ่น รวมทั้งเจ้า Bluetooth Receiver ของ Belkin ที่เคยรีวิวไปแล้วด้วย

bluetooh-a2dp-codec

ที่มา: Bluetooth SIG

สำหรับ codec ที่ใช้ในการเข้า – ถอดรหัสข้อมูลเสียง A2DP กำหนดให้ Low Complexity Subband Coding (SBC) เป็น codec พื้นฐานที่อุปกรณ์ที่ใช้ A2DP ทุกตัวต้องมี และกำหนด codec ที่ทางเลือกอีก 3 ตัว ได้แก่ MPEG-1, 2 Audio (MP3 อยู่ในตระกูลนี้), MPEG-2, 4 AAC (ระบบปฏิบัติการ iOS รองรับ MPEG-2 AAC LC ที่ bitrate 264,630 bps) และ ATRAC

SBC เป็น codec ที่ออกแบบมาให้คงคุณภาพเสียงที่ยอมรับได้ที่ขนาด bitrate ปานกลาง ในขณะที่มีความซับซ้อนในการคำนวณต่ำ ทำให้เหมาะกับการนำมาใช้งานกับ Bluetooth ซึ่งมีความกว้างของช่องสัญญาณไม่มาก และมีชิปประมวลผลความเร็วต่ำ

ในส่วนของการออกแบบ SBC นั้น มีพื้นฐานบางส่วนมาจาก MPEG-1 Layer 2 ซึ่งเป็น codec ที่ผู้ประดิษฐ์เคยมีส่วนรวมในการออกแบบด้วย ส่วน bitrate ที่ SBC รองรับสูงสุดที่ 345 kbps

เนื่องจาก SBC เป็น codec พื้นฐานสำหรับใช้งานกับ A2DP ทุกบริษัทสามารถใช้งาน codec นี้ได้โดยไม่มีค่าลิขสิทธิ์เพิ่มเติม แต่มีข้อแม้ว่าต้องนำมาใช้งานกับ A2DP เท่านั้น

นอกจากนี้ A2DP ยังเปิดกว้างให้ใช้งาน codec อื่น ๆ นอกเหนือจากที่กำหนดไว้ได้ แต่มีข้อแม้ว่าจะต้องรักษาความเข้ากันได้ของ codec คือ Source จะต้องมี codec SBC นอกเหนือจาก codec เฉพาะเสมอ และสามารถยื่น codec ตัวนี้เข้าเป็น codec ทางเลือกได้ด้วย หากผ่านการทดสอบเกณฑ์ที่กำหนดไว้ และต้องเปิดเผยคุณสมบัติทั้งหมดของ codec ให้บริษัทอื่น ๆ ได้รับทราบด้วย

อย่างไรก็ตาม การใช้งาน codec ทางเลือก ผู้ใช้งานยังคงต้องติดต่อบริษัทเจ้าของ codec เพื่อขออนุญาตการใช้งานเหมือนเดิมครับ

csr-aptx

ตัวอย่าง codec อื่น ๆ ที่ได้รับความนิยม แต่ยังไม่ได้ถูกนำไปใส่เป็น option ของ A2DP เช่น aptX ของ CSR ที่ให้คุณภาพเสียงเทียบเท่า Audio CD ถูกนำไปใช้งานใน Mac OS X อุปกรณ์ Android เครื่องเสียง หูฟัง และลำโพงจากบริษัทชั้นนำต่าง ๆ

sony-ldac

codec ที่น่าสนใจอีกตัวหนึ่งคือ LDAC ของ Sony ที่เพิ่งเปิดตัวไปเมื่อต้นปี กับความสามารถในการเข้ารหัสข้อมูลเสียงความละเอียด 24-bit 96 kHz โดยตรง โดยไม่ลดความละเอียดลงมาเป็น 16-bit 44.1 kHz ก่อนแล้วค่อยเข้ารหัสเหมือน codec ตัวอื่น ๆ

Walkman ZX1 connect to SRS-BTV5 with A2DP

สุดท้ายก็มาถึงเรื่องคุณภาพเสียง ที่เป็นเรื่องสำคัญที่สุด A2DP เองนั้นออกแบบมาให้คุณภาพของชิป Bluetooth ไม่มีผลต่อคุณภาพเสียง ด้วยการให้ซอฟต์แวร์เป็นตัวจัดการเรื่องเข้าและถอดรหัสเอง และการใช้ช่องสัญญาณ ACL ที่มีความเสถียรในการส่งข้อมูลมาก

เนื่องจาก codec ที่นิยมใช้งานกับ A2DP มักจะเป็น codec ที่เข้ารหัสแบบ lossy เพราะฉะนั้น codec ที่ใช้งานจึงกำหนดคุณภาพของสัญญาณเสียงที่ฝั่ง sink จะได้รับด้วย แต่ก็ต้องอย่าลืมว่าที่ฝั่ง sink เองยังมีปัจจัยอื่น ๆ ที่จะกำหนดคุณภาพเสียงอีก หลังจากที่ได้รับข้อมูลเสียงจาก source มาแล้ว ทั้งวงจรภาค DAC วงจรภาคขยาย หรือแม้กระทั่งการออกแบบตัวลำโพงหรือหูฟังเองก็ตาม

บทความรอบนี้อาจจะเข้าใจยากสักหน่อย แต่ถ้าจับจุดสำคัญได้ก็จะเข้าใจได้ไม่ยากครับ

More info

Bluetooth SIG

2 thoughts on “มาทำความรู้จัก A2DP สำหรับส่งสัญญาณเสียงผ่าน Bluetooth กันเถอะ

  1. Pingback: รีวิว Sony MDR-1ABT หูฟัง Bluetooth ก็เล่น Hi-Res ได้นะ | RE.V –>

Leave a Reply