void AudioProcessor::set_state(const AudioProcessorState *state) { if (!state) return; // Channel order set_input_order(state->input_order); set_output_order(state->output_order); // Master gain set_master(state->master); // AGC set_auto_gain(state->auto_gain); set_normalize(state->normalize); set_attack(state->attack); set_release(state->release); // DRC set_drc(state->drc); set_drc_power(state->drc_power); // Matrix // (!) Auto matrix option must be set before setting the matrix // because when auto matrix is on, mixer rejects the new matrix. set_auto_matrix(state->auto_matrix); set_matrix(state->matrix); // Automatrix options set_normalize_matrix(state->normalize_matrix); set_voice_control(state->voice_control); set_expand_stereo(state->expand_stereo); // Automatrix levels set_clev(state->clev); set_slev(state->slev); set_lfelev(state->lfelev); // Input/output gains set_input_gains(state->input_gains); set_output_gains(state->output_gains); // SRC set_src_quality(state->src_quality); set_src_att(state->src_att); // Eqalizer set_eq(state->eq); if (state->eq_master_bands) set_eq_bands(CH_NONE, state->eq_master_bands, state->eq_master_nbands); for (int ch = 0; ch < CH_NAMES; ch++) if (state->eq_bands[ch]) set_eq_bands(ch, state->eq_bands[ch], state->eq_nbands[ch]); // Bass redirection set_bass_redir(state->bass_redir); set_bass_freq(state->bass_freq); set_bass_channels(state->bass_channels); // Delays set_delay(state->delay); set_delay_units(state->delay_units); set_delays(state->delays); // Dithering set_dithering(state->dithering); }
/* 初始化mudlib中的master */ void init_master() { char buf[512]; #ifdef LPC_TO_C lpc_object_t *compiled_version; #endif object_t *new_ob; if (!strip_name(MASTER_FILE, buf, sizeof buf)) error("Illegal master file name '%s'\n", MASTER_FILE); #ifdef LPC_TO_C compiled_version = (lpc_object_t *)lookup_object_hash(buf); /* cv是个lpc的obj */ #endif new_ob = load_object(buf, compiled_version); /* 将master load进来 */ if (new_ob == 0) { fprintf(stderr, "The master file %s was not loaded.\n", MASTER_FILE); exit(-1); } set_master(new_ob); /* 设置master对象 */ }
void process_device(int argc, char **argv, struct usb_device *dev, struct usb_config_descriptor *cfg, int itfnum) { int mac[6]; usb_dev_handle *devh = usb_open(dev); if ( ! devh ) fatal("usb_open"); usb_detach_kernel_driver_np(devh, itfnum); int res = usb_claim_interface(devh, itfnum); if ( res < 0 ) fatal("usb_claim_interface"); show_master(devh, itfnum); if ( argc >= 2 ) { if ( sscanf(argv[1], "%x:%x:%x:%x:%x:%x", &mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]) != 6 ) { printf("usage: %s [<bd_addr of master>]\n", argv[0]); exit(1); } } else { FILE *f = popen("hcitool dev", "r"); if ( !f || fscanf(f, "%*s\n%*s %x:%x:%x:%x:%x:%x", &mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]) != 6 ) { printf("Unable to retrieve local bd_addr from `hcitool dev`.\n"); printf("Please enable Bluetooth or specify an address manually.\n"); exit(1); } pclose(f); } set_master(devh, itfnum, mac); usb_reset(devh); usb_release_interface(devh, itfnum); usb_close(devh); }