- if (ret == 0)
- return;
- if (powd->fd < 0) {
- int32_t rate, ch;
- ret = -1;
- if (!conf->samplerate_given) /* config option trumps btr_exec */
- ret = get_btr_samplerate(wn->btrn, &rate);
- if (ret < 0)
- rate = conf->samplerate_arg;
- ret = -1;
- if (!conf->channels_given)
- ret = get_btr_channels(wn->btrn, &ch);
- if (ret < 0)
- ch = conf->channels_arg;
- ret = oss_init(wn, rate, ch);
+ ret = btr_node_status(btrn, wn->min_iqs, BTR_NT_LEAF);
+ if (ret <= 0)
+ goto out;
+ if (!powd) {
+ int32_t rate, ch, format;
+ get_btr_sample_rate(btrn, &rate);
+ get_btr_channels(btrn, &ch);
+ get_btr_sample_format(btrn, &format);
+ ret = oss_init(wn, rate, ch, format);