ASRC conversion fails for some rates

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ASRC conversion fails for some rates

853 Views
scrapper
Contributor I

I am using the ASRC in the imx6q, together with SSI based ALSA sound cards. When I configure the SSI ports to operate at a native sampling rate of 96KHz, then I can play back audio files with a sampling rate ranging from 44.1KHz up to 192 KHz. But when I configure the SSI ports to use a native sampling rate of 44.1 KHz, then the ASRC only works up to 88.2 KHz. When I configure the SSI ports to use a native sampling rate of 48 KHz, then the ASRC only works up to 96 KHz. When I try to play back higher sampling rate audio files, there is basically no audio and I am getting timeouts "conversion failed" error messages from the fsl-alsa-plugins library.

While everything is working fine for 96 KHz, I still want to set the SSI native sampling rate to 44.1 KHz, mainly because the overwhelming majority of content is still available at this rate. What could be the problem that cause the conversion errors?

Labels (3)
Tags (3)
0 Kudos
2 Replies

586 Views
jimmychan
NXP TechSupport
NXP TechSupport

could you tell me which bsp are you using? which part of code you modified?

0 Kudos

586 Views
scrapper
Contributor I

I am using the yocto linux daisy branch with linux kernel version 3.10.53 (tag: imx_3.10.53_1.1.0_ga)

I have added a new SSI based sound card driver to this kernel, no other modifications. To the yocto distribution, I have added the fsl-alsa-plugins and defined aliases in /etc/asound.conf for the asrc. Here is the asound.conf:

defaults.pcm.rate_converter "asrcrate"

pcm.sc0 {

   type hw

   card 0

   device 0

}

pcm.sc1 {

   type hw

   card 1

   device 0

}

pcm.sc2 {

   type hw

   card 2

   device 0

}

pcm.sc3 {

   type hw

   card 3

   device 0

}

pcm.asrc0 {

    type plug

    slave {

        pcm "sc0"

        format S24_LE

        channels 2

        rate 96000

    }

}

pcm.asrc1 {

    type plug

    slave {

        pcm "sc1"

        format S24_LE

        channels 2

        rate 96000

    }

}

pcm.asrc2 {

    type plug

    slave {

        pcm "sc2"

        format S24_LE

        channels 2

        rate 44100

    }

}

pcm.asrc3 {

    type plug

    slave {

        pcm "sc3"

        format S24_LE

        channels 2

        rate 48000

    }

}

pcm.sv_sc0 {

    type softvol

    slave {

        pcm "sc0"

    }

    control {

        name "Master"

        card 0

    }

}

pcm.sv_sc1 {

    type softvol

    slave {

        pcm "sc1"

    }

    control {

        name "Master"

        card 1

    }

}

pcm.sv_sc3 {

    type softvol

    slave {

        pcm "sc3"

    }

    control {

        name "Master"

        card 3

    }

}

pcm.sv_asrc0 {

    type softvol

    slave {

        pcm "asrc0"

    }

    control {

        name "Master"

        card 0

    }

}

pcm.sv_asrc1 {

    type softvol

    slave {

        pcm "asrc1"

    }

    control {

        name "Master"

        card 1

    }

}

pcm.sv_asrc3 {

    type softvol

    slave {

        pcm "asrc3"

    }

    control {

        name "Master"

        card 3

    }

}

0 Kudos