ALSA saída para dois dispositivos dmix simultaneamente usando um dispositivo multi

1

Estou tentando reproduzir áudio em dois dispositivos de hardware simultaneamente, megalodon e analog , usando dois dispositivos dmix. megalodon é um fone de ouvido USB, analog é apenas a porta de 3,5 mm do meu computador. Quando eu roteio o áudio para o dmix para megalodon chamado headsetout e também o roteio diretamente para analog , ele funciona muito bem. No entanto, se eu rotear para headsetout e analogout (o dmix para analog ), recebo o erro ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable . Se eu der saída somente para analogout , tocando diretamente ou criando um dispositivo de múltiplas saídas que só produz em analogout , ele funciona muito bem.

Como posso fazer com que a saída para headsetout e analogout funcione corretamente?

Aqui estão as partes relevantes do meu asound.conf para facilitar a compreensão do que está acontecendo. Além disso, tentei envolver os dispositivos dmix em um dispositivo plug , pois eles estão na configuração abaixo, bem como usá-los diretamente, sem sucesso.

pcm.megalodon {
    type hw
    card "Megalodon"
}

pcm.analog {
    type hw
    card "PCH"
    device 0
}

#Play to headphones and earbuds
pcm.splitout {
    type plug
    slave.pcm {
        type multi
        slaves {
            a { channels 2 pcm "headsetout" }
            b { channels 2 pcm "analog" }
        }
        bindings {
            0 { slave a channel 0 }
            1 { slave a channel 1 }
            2 { slave b channel 0 }
            3 { slave b channel 1 }
        }

    }
    ttable [
        [ 1 0 1 0 ]
        [ 0 1 0 1 ]
    ]
}

#Theoretically play to headphones and earbuds
#this one doesn't work
#error:
#ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
#aplay: set_params:1204: Broken configuration for this PCM: no configurations available
#
#However, analogout works when used on it's own
pcm.splitout1 {
    type plug
    slave.pcm {
        type multi
        slaves {
            a { channels 2 pcm "headsetout" }
            b { channels 2 pcm "analogout" }
        }
        bindings {
            0 { slave a channel 0 }
            1 { slave a channel 1 }
            2 { slave b channel 0 }
            3 { slave b channel 1 }
        }

    }
    ttable [
        [ 1 0 1 0 ]
        [ 0 1 0 1 ]
    ]
}

#dmix output for headphones
pcm.headsetout {
    type plug
    slave.pcm {
        type dmix
        ipc_key 192959
        ipc_key_add_uid true
        ipc_perm 0666
        slave {
            pcm "megalodon"
            rate 48000
            channels 6

            period_time 0
            period_size 1024
            buffer_time 0
            buffer_size 16384
        }
    }
}

#dmix output for analog jack (3.5mm)
pcm.analogout {
    type plug
    slave.pcm {
        type dmix
        ipc_key 3785682
        ipc_key_add_uid true
        ipc_perm 0666
        slave {
            pcm "analog"
            rate 48000
            channels 2

            period_time 0
            period_size 1024
            buffer_time 0
            buffer_size 16384
        }
    }
}
    
por Unknownloner 16.08.2015 / 07:28

1 resposta

0

Eu decidi tentar usar plugins diferentes no problema e consegui consertá-lo com o upmix. Fiquei com a impressão de que type plug teria lidado com isso para mim, mas esse não é o caso.

Antes:

#dmix output for headphones
pcm.headsetout {
    type plug
    slave.pcm {
        type dmix
        ipc_key 192959
        ipc_key_add_uid true
        ipc_perm 0666
        slave {
            pcm "megalodon"
            rate 48000
            channels 6

            period_time 0
            period_size 1024
            buffer_time 0
            buffer_size 16384
        }
    }
}

Depois:

#dmix output for headphones
pcm.headsetout {
    type upmix
    slave.pcm {
        type plug
        slave.pcm {
            type dmix
            ipc_key 192959
            ipc_key_add_uid true
            ipc_perm 0666
            slave {
                pcm "megalodon"
                rate 48000
                channels 6

                period_time 0
                period_size 1024
                buffer_time 0
                buffer_size 16384
            }
        }
    }
}
    
por 16.08.2015 / 20:41