Bool audriv_set_play_channels(long channels) /* 演奏用のチャネル数を設定します. * 失敗すると False を返し,成功すると True を返します. */ { int i, n; const long *c = audriv_available_channels(&n); for(i = 0; i < n; i++) if(channels == c[i]) break; if(i == n) return False; if(play_nchannels == channels) return True; play_nchannels = channels; play_frame_width = AENC_SAMPW(play_encoding) * play_nchannels; if(out) { audriv_play_close(); audriv_play_open(); } return True; }
static int audriv_al_set_width(ALconfig c, int encoding) { if(encoding == AENC_G711_ULAW) return alSetWidth(c, 2); else return alSetWidth(c, AENC_SAMPW(encoding)); }
Bool audriv_set_play_encoding(long encoding) /* audio 演奏時の符号化方式を指定します. * 成功した場合は True を,失敗した場合は False を返します. */ { int i, n; const long *enc; if(encoding == play_encoding) return True; enc = audriv_available_encodings(&n); for(i = 0; i < n; i++) if(enc[i] == encoding) break; if(i == n) return False; play_encoding = encoding; play_frame_width = AENC_SAMPW(encoding) * play_nchannels; if(out) { audriv_al_set_width(out_config, encoding); alSetConfig(out, out_config); } return True; }
Bool audriv_set_play_encoding(long encoding) /* audio 演奏時の符号化方式を指定します. * 成功した場合は True を,失敗した場合は False を返します. */ { int i, n; const long *enc; enc = audriv_available_encodings(&n); for(i = 0; i < n; i++) if(enc[i] == encoding) { play_encoding = encoding; play_sample_size = AENC_SAMPW(encoding) * play_channels; return True; } return False; }