Định tuyến âm thanh đa vùng

Dịch vụ âm thanh ô tô sử dụng chính sách âm thanh động Core Audio để hỗ trợ các trường hợp sử dụng trên ô tô.

  • Phát lại âm thanh riêng biệt cho từng hành khách, được gọi là âm thanh đa vùng, trong đó mỗi vùng cho phép phát lại âm thanh đồng thời.

  • Cấu hình vùng âm thanh động.

  • Dàn âm thanh khu vực hành khách chính.

  • Gương âm thanh của hành khách.

Trong mỗi trường hợp sử dụng, dịch vụ âm thanh ô tô sử dụng chính sách âm thanh động để tự động định tuyến âm thanh đến thiết bị đầu ra được chỉ định.

Âm thanh đa vùng

Âm thanh đa vùng cho phép nhiều người dùng tương tác đồng thời với AAOS. Một tập hợp các thiết bị đầu ra được liên kết với một vùng và mỗi vùng duy trì mức âm lượng và tiêu điểm âm thanh. Hành khách có thể nghe âm thanh của họ trong khi người lái xe nghe một nguồn khác trong khu vực chính (thường là cabin chính).

Kiến trúc âm thanh đa vùng

Kiến trúc dịch vụ âm thanh ô tô

Hình 1. Kiến trúc dịch vụ âm thanh ô tô.

Vùng âm thanh trên ô tô là sự trừu tượng hóa của đầu ra âm thanh, tiêu điểm âm thanh và các cài đặt âm thanh khác, tất cả đều có thể được quản lý độc lập. Đối với mục đích định tuyến, mỗi vùng được xác định là một tập hợp các thiết bị bus đầu ra âm thanh được sắp xếp trong cấu hình chính sách âm thanh. Các thiết bị khác nhau tùy theo định nghĩa vùng âm thanh. Trong Hình 1, các thiết bị bus từ 1 đến 5 thuộc về vùng 0, các thiết bị bus từ 6 đến 8 thuộc về vùng một và các thiết bị bus từ 9 đến 11 thuộc về vùng hai.

Cấu hình âm thanh ô tô

Thông thường, các thiết bị đầu ra được gán cho một vùng âm thanh. Mỗi vùng âm thanh được xác định trong car_audio_configuration.xml . Đoạn mã sau hiển thị cấu hình âm thanh ô tô cho Hình 1:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneI="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId là định nghĩa dịch vụ ô tô được quản lý bởi CarOccupantZoneManager . Nó được sử dụng trong ô tô để xác định ánh xạ cho người dùng trong ô tô tới một vị trí chỗ ngồi cụ thể. CarOccupantZoneService cũng xác định ánh xạ từ khu vực có người ở tới màn hình, các thiết bị ngoại vi khác và người dùng sau khi người dùng đăng nhập vào màn hình. Một vùng âm thanh có:

  • ID vùng âm thanh và ID vùng cư trú.

    • Ánh xạ vùng âm thanh tới vùng người ngồi (ghế ngồi, màn hình và các thiết bị ngoại vi khác)
    • Ánh xạ ID người dùng nào được chỉ định với vùng âm thanh khi đăng nhập
  • Danh sách cấu hình âm thanh. Mỗi cấu hình âm thanh có một tập hợp các nhóm âm lượng. Mỗi nhóm âm lượng có một bộ thiết bị bus âm thanh.

    • Khi âm lượng được thay đổi, tất cả các thiết bị âm thanh trong nhóm đều được điều khiển theo cách tương tự.

    • Mỗi thiết bị âm thanh được gán một danh sách các thuộc tính âm thanh. Thông tin này được sử dụng để xây dựng chính sách âm thanh kết hợp với các thuộc tính âm thanh được gán khác nhau.

Cấu hình này cho phép định tuyến các cách sử dụng thuộc tính âm thanh khác nhau đến các thiết bị đầu ra khác nhau trong mỗi vùng. Tùy thuộc vào trường hợp sử dụng, các âm thanh khác nhau có thể phát đồng thời. Ví dụ: bạn có thể chọn định cấu hình cabin chính (khu vực chính) để phát âm thanh đa phương tiện trên tất cả các loa nhưng chỉ phát âm thanh điều hướng trên các loa gần người lái nhất. Với khả năng phát lại âm thanh đồng thời, cabin chính tiếp tục nghe các phương tiện truyền thông trong khi hệ thống định vị được cung cấp cho người lái.

Quy trình đăng nhập hành khách bằng âm thanh đa vùng

Sơ đồ trình tự bên dưới hiển thị quy trình kích hoạt định tuyến âm thanh khi hành khách đăng nhập vào màn hình tương ứng của họ:

hình ảnh

Hình 2.

Theo trình tự này, thông tin đăng nhập của người dùng sẽ được truyền tới dịch vụ âm thanh ô tô thông qua dịch vụ khu vực dành cho người sử dụng.

  1. Dịch vụ âm thanh ô tô (dành cho một vùng âm thanh cụ thể) sử dụng API AudioPolicy#removeUserIdDeviceAffinity để xóa các mối quan hệ tương đồng với thiết bị của người dùng. API này lấy ID người dùng. Trong trường hợp này, người dùng của vùng trước đó.

  2. API AudioPolicy#setUserIdDeviceAffinity chỉ định người dùng mới cho một vùng, vùng này nhận ID người dùng và tất cả các thiết bị cho một cấu hình vùng cụ thể.

Cấu hình vùng động

Trong Android 14, cấu hình vùng động được giới thiệu để cho phép các OEM định cấu hình các bộ thiết bị khác nhau cho hành khách. Trường hợp sử dụng cho phép hành khách ngồi ở ghế sau chuyển đổi giữa loa tựa đầu cho ghế sau và thiết bị ngoại vi tai nghe cho ghế sau.

Trong trường hợp này, cần có hai cấu hình. Mỗi chiếc dành cho tựa đầu ghế sau và thiết bị ngoại vi tai nghe. Âm thanh cho một người dùng cụ thể chỉ được định tuyến đến một cấu hình tại một thời điểm.

Quy trình cấu hình vùng động

Hình 3. Quy trình cấu hình vùng động.

Hình 3 minh họa kiến ​​trúc cho quy trình cấu hình vùng động. Vùng âm thanh 1 chứa hai cấu hình, Config 0Config 1 , tương ứng được liên kết với loa và tựa đầu của thiết bị đầu ra.

Khi đăng nhập, người dùng sẽ tự động được gán cấu hình mặc định. Khi người dùng chọn thay đổi cấu hình, thường thông qua giao diện người dùng hệ thống, dịch vụ âm thanh ô tô sẽ thực hiện chuyển đổi giữa hai cấu hình. Bằng cách này, thiết bị đầu ra được chuyển đổi giữa loa Z1 và tựa đầu Z1.

Đoạn mã bên dưới hiển thị thiết lập cho cấu hình vùng động này.

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

Để tạo điều kiện thuận lợi cho việc quản lý cấu hình âm thanh, trình quản lý âm thanh ô tô cung cấp các API để quản lý cấu hình:

  • Cấu hình truy vấn có sẵn cho một vùng.
  • Truy vấn hiện đã đặt cấu hình cho một vùng.
  • Chuyển sang cấu hình khác.

Ứng dụng hoặc dịch vụ giao diện người dùng hệ thống có thể sử dụng các API này để quản lý cấu hình cho vùng âm thanh như trong Hình 4. API truy vấn hiển thị cả hai cho hành khách. Người dùng có thể chọn một cấu hình khác bằng cách nhấn vào lệnh cho cấu hình mong muốn.

Quy trình cấu hình vùng động

Hình 4. Quy trình cấu hình vùng động.

Dàn âm thanh hành khách khu vực chính

Truyền âm thanh hành khách khu vực chính là một tính năng được giới thiệu trong Android 14 để cho phép hành khách truyền âm thanh đa phương tiện của họ vào khu vực chính. Bằng cách này, âm thanh đa phương tiện của hành khách có thể được truyền tới cabin chính trong khi người lái xe vẫn có toàn quyền kiểm soát.

Hình bên dưới thể hiện phiên bản đơn giản của kiến ​​trúc dành cho dàn âm thanh phương tiện hành khách khu vực chính.

Quy trình cấu hình vùng động

Hình 5. Quy trình cấu hình vùng động.

Hình ảnh cho thấy thiết bị đầu ra đa phương tiện của người lái xe được chia sẻ với hành khách, điều này chỉ xảy ra khi hành khách đang chuyển sang chế độ vùng chính. Chính sách âm thanh động cũng được dùng để quản lý việc định tuyến âm thanh cho trình điều khiển nhưng không có thay đổi nào được áp dụng cho các mối quan hệ tương đồng của thiết bị đối với trình điều khiển. Đối với hành khách, danh sách các thiết bị đầu ra được thay đổi như sau:

  • Thiết bị đầu ra media cho hành khách bị xóa khỏi danh sách thiết bị
  • Thiết bị đầu ra media cho trình điều khiển được thêm vào danh sách thiết bị
  • Các thiết bị đầu ra dành cho khu vực âm thanh hành khách còn lại nằm trong danh sách thiết bị

Danh sách thiết bị mới này được gán cho hành khách bằng API AudioPolicy#setUserIdDeviceAffinity . Các tham số được truyền tới API là danh sách thiết bị và ID người dùng của hành khách. Khi dịch vụ chính sách âm thanh của hệ thống âm thanh truy vấn hỗn hợp âm thanh nào sẽ được chọn cho rãnh phương tiện được liên kết với hành khách, hỗn hợp âm thanh đa phương tiện được liên kết với vùng chính sẽ được chọn.

Yêu cầu chính đối với việc truyền âm thanh vùng chính là thiết bị đầu ra phương tiện của vùng chính phải được cách ly khỏi các mục đích sử dụng thuộc tính âm thanh khác. Mặt khác, trong quá trình xây dựng hỗn hợp âm thanh, các thuộc tính âm thanh khác sẽ được thêm vào hỗn hợp. Khi việc lựa chọn kết hợp được thực hiện bởi hệ thống âm thanh, tất cả âm thanh kèm theo kết hợp sẽ được chọn để phát lại trong cabin chính.

Gương âm thanh khu vực hành khách

Tính năng gương âm thanh cho phép hành khách chia sẻ âm thanh. Tính năng gương sao chép dữ liệu âm thanh ở từng vùng âm thanh để tất cả hành khách có thể nghe cùng một âm thanh. Trong trường hợp này, trọng tâm âm thanh được chia sẻ với hành khách tham gia phản chiếu âm thanh.

Định tuyến nhân bản âm thanh

Cần tối thiểu hai hành khách để kích hoạt tính năng phản chiếu âm thanh. Do đó, cấu hình âm thanh chỉ có hai vùng âm thanh dành cho hành khách sẽ cần một thiết bị đầu ra gương. Với định nghĩa trên, có thể bắt đầu hai phiên sao chép đồng thời.

Hình bên dưới hiển thị sơ đồ đơn giản hóa để phản chiếu âm thanh đa vùng giữa hai hành khách. Âm thanh từ cả hai hành khách được chuyển đến thiết bị nhân bản âm thanh, bus_1000 . Audio HAL sao chép tín hiệu vào vùng nguồn.

Quy trình cấu hình vùng động

Hình 6. Quy trình cấu hình vùng động.

Định tuyến này chỉ được kích hoạt khi hành khách ở chế độ phản chiếu. Nếu không, các thiết bị tương ứng cho vùng âm thanh sẽ được chỉ định cho hành khách. Khi tính năng phản chiếu lần đầu tiên được bật cho hành khách, API AudioPolicy#setUserIdDeviceAffinity sẽ sửa đổi định tuyến:

  • Thiết bị đầu ra đa phương tiện dành cho hành khách bị xóa khỏi danh sách thiết bị.
  • Thiết bị đầu ra phản chiếu được thêm vào danh sách thiết bị.
  • Các thiết bị đầu ra cho khu vực âm thanh hành khách còn lại nằm trong danh sách các thiết bị.

Với danh sách thiết bị, API được gọi với danh sách thiết bị được cập nhật và ID người dùng của hành khách. Hình ảnh sau đây cung cấp sơ đồ trình tự của quy trình nhân bản âm thanh.

Quy trình nhân bản âm thanh

Hình 7. Quy trình nhân bản âm thanh.

Trong Hình 7, các API của trình quản lý âm thanh ô tô để quản lý phản chiếu âm thanh được gọi từ Dịch vụ hệ thống phương tiện. Cụ thể là API để bật tính năng phản chiếu âm thanh cho Người dùng 1 và Người dùng 2, CarAudioManager#enableMirrorForAudioZones .

Dịch vụ âm thanh ô tô định cấu hình định tuyến âm thanh cho hành khách người dùng như mô tả ở trên. Dịch vụ âm thanh ô tô cũng gửi tín hiệu đến HAL âm thanh để định cấu hình và sao chép âm thanh từ thiết bị gương sang các vùng tương ứng.

Trong hình ảnh trên, dịch vụ âm thanh ô tô gửi mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

Ở đâu,

bus_1000 là bus nguồn và bus_10bus_20 là bus đích.

Tín hiệu được gửi qua AudioManager#setParameters API không được hiển thị trong sơ đồ trình tự, đến HAL thông qua dịch vụ âm thanh.

Khi tắt tính năng nhân bản âm thanh, tín hiệu sau sẽ được gửi, mirroring_src=bus_1000;mirroring=off . HAL có thể sử dụng tín hiệu này để tắt tính năng sao chép âm thanh khi tính năng phản chiếu âm thanh không được bật. Để xác định thiết bị phản chiếu âm thanh, tệp cấu hình âm thanh ô tô chứa một phần có tên mirroringDevices , như hiển thị trong đoạn mã bên dưới.

Trong đoạn mã này, hai thiết bị phản chiếu được xác định, bus_1000bus_2000 , để bốn hành khách có thể sử dụng tính năng phản chiếu âm thanh.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>