Versão: 1.2.1
Última atualização: 21/06/2024
Legend
| Verbo do produto | Ação de desenvolvimento |
|---|---|
| "MUST" | Requisito obrigatório de produto |
| "SHOULD" | Recomendação opcional |
| "MAY" | Opcional |
Visão geral
Este documento descreve os requisitos que um microfone USB compatível com o ChromeOS atende. Esta especificação não é para produtos WWCB nem para um produto projetado e certificado com um Chromebook.
USB
Segurança
Dongle sem fio de 2,4 GHz
- O dispositivo sem fio de 2,4 GHz só faz pareamento automático com o receptor (dongle) que vem na caixa.
- É necessário que o usuário faça uma ação (no dispositivo ou em um app) para emparelhar o headset com outro receptor ou um novo headset com um receptor já existente.
- Se um app precisar alterar o pareamento do fone de ouvido/receptor, ele precisará ser executado no ChromeOS, como por uma extensão. O app também pode ser um app da Web usando WebUSB/WebHID.
- Se o pareamento for implementado por uma extensão, ela só poderá acessar portas USB. Os scripts de conteúdo são explicitamente proibidos.
Firmware e conector
- O headset precisa ser declarado como um dispositivo de áudio com um descritor de interface de áudio correto (0x01).
- É necessário ter um descritor correspondente para o terminal de entrada e saída.
- Recomendamos informar o tipo de terminal da classe de áudio USB (UAC)
- Headset (0x0402)
- SpeakerPhone (0x0403-0x0405) .
- Recomendamos informar o tipo de terminal da classe de áudio USB (UAC)
- É necessário ter um descritor correspondente para o terminal de entrada e saída.
- Se tiver um botão, ele precisa ser declarado como um HID.
- O fone de ouvido precisa atender aos requisitos de firmware e conector da WWCB.
Software
Formato
Consulte Formato de áudio.
Para dispositivos com descritor de interface de áudio de entrada e saída.
Exemplo de um descritor de interface de áudio
Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0
Se as taxas de amostragem da entrada e da saída forem diferentes, o dispositivo precisará ser capaz de oferecer suporte à reprodução e à captura com taxas de amostragem diferentes ao mesmo tempo.
Caso contrário, o dispositivo precisa refletir o mesmo valor no AudioStreaming
Interface Descriptor -> tSamFreq.
Exemplo de taxa de amostragem de saída de áudio USB de 48k
AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 2 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT(Output) bmAttributes 9 Transfer Type Isochronous Synch Type Adaptive Usage Type DataExemplo de taxa de amostragem de entrada de áudio USB de 44,1 k
AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 2 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 44100 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x81 EP 1 In(Input) bmAttributes 9 Transfer Type Isochronous Synch Type Adaptive Usage Type Data
Códigos HID
- Para cada evento HID, ele só pode transmitir um evento por vez.
- O código de evento correto e o código de evento correspondente precisam ser recebidos quando
o botão é pressionado.
- Por exemplo, aumente o volume.
O evtest
só pode observar um evento de aumentar volume, e o código precisa ser
KEY_VOLUME_UP.
- Por exemplo, aumente o volume.
O evtest
só pode observar um evento de aumentar volume, e o código precisa ser
- Se houver uma interface projetada para fornecer as seguintes funcionalidades, o periférico USB precisará emitir ou receber os eventos HID correspondentes de acordo com a especificação HID da USB.org.
Página do consumidor (0x0c)
| Nome da chave | ID de uso do HID | Tipo de uso |
|---|---|---|
KEY_PLAY |
0x0b0 |
OOC |
KEY_PAUSE |
0x0b1 |
OOC |
KEY_NEXTSONG |
0x0b5 |
OSC |
KEY_PREVIOUSSONG |
0x0b6 |
OSC |
KEY_STOPCD |
0x0b7 |
OSC |
KEY_PLAYPAUSE |
0x0cd |
OSC |
KEY_PREVIOUSSONG |
0x0b6 |
OSC |
KEY_MUTE |
0x0e2 |
OOC |
KEY_VOLUMEUP |
0x0e9 |
RTC |
KEY_VOLUMEDOWN |
0x0ea |
RTC |
Página de telefonia (0x0b)
| Nome da chave | ID de uso do HID | Tipo de uso |
|---|---|---|
| Hook Switch | 0x20 |
OOC |
| Campainha | 0x9e |
OOC |
Página do LED (0x08)
| Nome da chave | ID de uso do HID | Tipo de uso |
|---|---|---|
| Desativar som | 0x09 |
OOC |
| Desligado | 0x17 |
OOC |
| Tocar | 0x18 |
OOC |
Detecção de entrada para fone de ouvido
Se um dispositivo USB não for compatível com a classe de áudio USB (UAC), ele sempre vai mostrar um nó de saída na bandeja do sistema do ChromeOS. No entanto, se o dispositivo USB for compatível com UAC, o sistema poderá detectar corretamente uma entrada para fone de ouvido de 3,5 mm quando o dispositivo for inserido.
- O CrOS precisa usar a detecção de presença para entradas de 3,5 mm
Formato de áudio
| Reprodução | Gravando | |
|---|---|---|
| Taxa de amostragem | ≥ 16 kHz | ≥ 16 kHz |
| Formato | S16_LE | S16_LE |
- O número e a configuração do canal precisam estar corretos.
- Todas as taxas de amostragem declaradas como compatíveis pelo headset precisam funcionar corretamente.
- O desvio entre a taxa medida e a taxa de amostragem precisa ser ≤ 0,1% .
- O erro padrão da regressão linear da taxa medida precisa ser < 30.
O headset precisa ser compatível com reprodução ou captura em diferentes taxas de amostragem que ele afirma oferecer suporte.
Por exemplo, reproduzir áudio abaixo de 44,1 kHz e capturar voz abaixo de 48 kHz simultaneamente.
- Caso contrário, o ChromeOS vai precisar adicionar um arquivo de configuração específico para impedir isso no lado do sistema.
Qualidade do áudio
Capturar caminho: silenciar
- Se houver uma interface para os usuários silenciarem o dispositivo de áudio, ela precisará
- Mantenha o estado de mudo de uma forma que não seja afetada por:
- Abrir e fechar o dispositivo.
- Trocar para outro dispositivo de entrada.
Latência de áudio
Latência
- Latência de saída
- A reprodução de áudio precisa começar em até 500 ms após uma ação do usuário que
inicia a reprodução.
- Pode solicitar uma renúncia se o OEM do dispositivo puder provar que nenhum eco é introduzido quando ele não atende a esse requisito.
- A reprodução de áudio precisa começar em até 500 ms após uma ação do usuário que
inicia a reprodução.
Sincronização de A/V
- A reprodução de áudio precisa estar sincronizada com a de vídeo. A reprodução de áudio pode anteceder o vídeo em até 25 ms ou ficar atrás em até 95 ms.
Histórico de revisões
| Data | Versão | Observações |
|---|---|---|
| 2024-06-21 | 1.2.1 | Especificação compatível com o ChromeOS derivada. Publicação inicial do site do parceiro. |
| 2022-09-01 | 1.2 | Especificação relacionada da WWCB v1.2 |
| 2022-02-05 | 1.1 | Especificação relacionada da WWCB v1.1 |
| 2021-01-12 | 1.0 | Especificação relacionada da WWCB criada. |