Commit Diff


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");
 			}