return 0;
        }
 
+       /* first release old resources */
+       atc->pcm_release_resources(atc, apcm);
+
        /* Get SRC resource */
        desc.multi = apcm->substream->runtime->channels;
        desc.msr = atc->msr;
        int n_srcimp = 0, n_amixer = 0, n_srcc = 0, n_sum = 0;
        struct src_node_conf_t src_node_conf[2] = {{0} };
 
+       /* first release old resources */
+       atc->pcm_release_resources(atc, apcm);
+
        /* The numbers of converting SRCs and SRCIMPs should be determined
         * by pitch value. */
 
        int n_amixer = apcm->substream->runtime->channels, i = 0;
        unsigned int pitch = 0, rsr = atc->pll_rate;
 
+       /* first release old resources */
+       atc->pcm_release_resources(atc, apcm);
+
        /* Get SRC resource */
        desc.multi = apcm->substream->runtime->channels;
        desc.msr = 1;