commit 7fc831ea00ec72448ae3f54f24b047528daa61d8 from: Omar Polo date: Fri Feb 18 08:29:17 2022 UTC support setting the number of channels for flac and vorbis commit - 170d771608a08c2f17310375440bb9e256bedde6 commit + 7fc831ea00ec72448ae3f54f24b047528daa61d8 blob - c0f29c807bdaa15952bf65eeb7b355086edbdfe6 blob + 6d19ff8fea09b2fed1dfd8223e6cbd51b3f79ea8 --- amused.h +++ amused.h @@ -123,7 +123,7 @@ __dead void usage(void); __dead void ctl(int, char **); /* player.c */ -int player_setrate(int); +int player_setup(int, int); void player_senderr(void); void player_sendeof(void); int player_shouldstop(void); blob - 665e02746dafe1fcaa4a1ff568c7b389d90a0e01 blob + 80997945fe67bea2dae6ff24b54f4d8cc68721e2 --- player.c +++ player.c @@ -74,7 +74,7 @@ audio_init(void) } int -player_setrate(int rate) +player_setup(int rate, int channels) { struct sio_par par; @@ -84,8 +84,14 @@ player_setrate(int rate) sio_initpar(&par); par.rate = rate; + par.pchan = channels; if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) { log_warnx("invalid params"); + return -1; + } + + if (par.pchan != channels) { + log_warnx("failed to set params"); return -1; } blob - 05cc53bf3b42995d18a118aefce89b45c9287827 blob + 8eb7ee2e495191e53bac7ea75e429672862a5202 --- player_flac.c +++ player_flac.c @@ -67,16 +67,18 @@ metacb(const FLAC__StreamDecoder *decoder, const FLAC_ void *d) { uint32_t sample_rate; + int channels; if (meta->type == FLAC__METADATA_TYPE_STREAMINFO) { sample_rate = meta->data.stream_info.sample_rate; + channels = meta->data.stream_info.channels; printf("sample rate: %d\n", sample_rate); printf("channels: %d\n", meta->data.stream_info.channels); printf("bps: %d\n", meta->data.stream_info.bits_per_sample); printf("total samples: %"PRIu64"\n", meta->data.stream_info.total_samples); - if (player_setrate(sample_rate) == -1) + if (player_setup(sample_rate, channels) == -1) err(1, "player_setrate"); } } blob - 7ecebc7682bb76323a344d961fcac7443e712e3b blob + 5ffd863eac37fe864762b9097dcebca55980af97 --- player_mad.c +++ player_mad.c @@ -95,7 +95,7 @@ output(void *data, const struct mad_header *header, st if (buffer->sample_rate != pcm->samplerate) { buffer->sample_rate = pcm->samplerate; - if (player_setrate(pcm->samplerate) == -1) + if (player_setup(pcm->samplerate, 2) == -1) err(1, "player_setrate"); } blob - 3a9eb89a37b03b6bf072b2d8a76712b437e1c0ae blob + 4f87ae3595c91d7db437efa7d7980af703af2b6d --- player_oggvorbis.c +++ player_oggvorbis.c @@ -63,7 +63,7 @@ play_oggvorbis(int fd) printf("bitstream is %d channel, %ldHz\n", vi->channels, vi->rate); - if (player_setrate(vi->rate) == -1) + if (player_setup(vi->rate, vi->channels) == -1) err(1, "player_setrate"); } blob - df81fe4c8785d0923adf92d4b232a96421f1017f blob + 7fa3621cf62bda5eb7595e9761764fde37567a34 --- player_opus.c +++ player_opus.c @@ -76,7 +76,7 @@ play_opus(int fd) head = op_head(of, li); if (head->input_sample_rate) { - if (player_setrate(head->input_sample_rate) + if (player_setup(head->input_sample_rate, 2) == -1) err(1, "player_setrate"); }