From 40fd19911fe24a2f899c104778dfba9fd1bea44c7912e7fff96d02de458906ad Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 12 Apr 2013 14:24:10 +0000 Subject: [PATCH] Accepting request 163762 from home:tiwai:branches:multimedia:libs - Update to version 1.0.27: including all previous fixes; all 00*-* patches dropped * Add support for alsactl daemon mode * Add snd_pcm_abort() support in aplay OBS-URL: https://build.opensuse.org/request/show/163762 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa-utils?expand=0&rev=71 --- ...-Add-support-for-channel-mapping-API.patch | 245 ------------------ ...play-Add-support-for-channel-mapping.patch | 106 -------- ...-More-support-for-channel-map-option.patch | 244 ----------------- ...est-Update-man-page-for-chmap-option.patch | 35 --- 0005-aplay-fix-typo-silence-warning.patch | 44 ---- ...xer-fix-handling-of-removed-controls.patch | 106 -------- ...Show-usage-if-no-parameter-is-passed.patch | 52 ---- ...xer-fix-rounding-of-relative-changes.patch | 35 --- ...er-Fix-parsing-container-TLV-entries.patch | 29 --- ...saloop-working-without-libsamplerate.patch | 60 ----- 0011-alsaloop-Fix-missing-endif.patch | 28 -- ...pport-for-big-endian-WAV-format-RIFX.patch | 196 -------------- ...-Fix-obsolete-AM_CONFIG_HEADER-macro.patch | 28 -- ...rease-the-maximum-supported-rate-to-.patch | 26 -- ...-dB-value-outputs-in-amixer-contents.patch | 38 --- alsa-utils-1.0.26.tar.bz2 | 3 - alsa-utils-1.0.27.tar.bz2 | 3 + alsa-utils.changes | 8 + alsa-utils.spec | 36 +-- 19 files changed, 14 insertions(+), 1308 deletions(-) delete mode 100644 0001-speaker-test-Add-support-for-channel-mapping-API.patch delete mode 100644 0002-aplay-Add-support-for-channel-mapping.patch delete mode 100644 0003-aplay-More-support-for-channel-map-option.patch delete mode 100644 0004-speaker-test-Update-man-page-for-chmap-option.patch delete mode 100644 0005-aplay-fix-typo-silence-warning.patch delete mode 100644 0006-alsamixer-fix-handling-of-removed-controls.patch delete mode 100644 0007-aplay-Show-usage-if-no-parameter-is-passed.patch delete mode 100644 0008-amixer-fix-rounding-of-relative-changes.patch delete mode 100644 0009-amixer-Fix-parsing-container-TLV-entries.patch delete mode 100644 0010-alsaloop-Make-alsaloop-working-without-libsamplerate.patch delete mode 100644 0011-alsaloop-Fix-missing-endif.patch delete mode 100644 0012-aplay-Add-the-support-for-big-endian-WAV-format-RIFX.patch delete mode 100644 0013-configure-Fix-obsolete-AM_CONFIG_HEADER-macro.patch delete mode 100644 0014-speaker-test-increase-the-maximum-supported-rate-to-.patch delete mode 100644 0015-amixer-Fix-dB-value-outputs-in-amixer-contents.patch delete mode 100644 alsa-utils-1.0.26.tar.bz2 create mode 100644 alsa-utils-1.0.27.tar.bz2 diff --git a/0001-speaker-test-Add-support-for-channel-mapping-API.patch b/0001-speaker-test-Add-support-for-channel-mapping-API.patch deleted file mode 100644 index 042345f..0000000 --- a/0001-speaker-test-Add-support-for-channel-mapping-API.patch +++ /dev/null @@ -1,245 +0,0 @@ -From 951cb2c2974293db6e12ef067ae7001074887932 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Tue, 11 Sep 2012 11:36:45 +0200 -Subject: [PATCH 1/5] speaker-test: Add support for channel mapping API - -The surround channel map follows the given channel map from the -driver if available. - -Also, the channels can be specified manually via -m option. -Pass the channel map like "FL,FR,FC,LFE". - -Signed-off-by: Takashi Iwai ---- - speaker-test/speaker-test.c | 139 +++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 124 insertions(+), 15 deletions(-) - ---- a/speaker-test/speaker-test.c -+++ b/speaker-test/speaker-test.c -@@ -60,6 +60,10 @@ - #include - #endif - -+#ifdef SND_CHMAP_API_VERSION -+#define CONFIG_SUPPORT_CHMAP 1 -+#endif -+ - enum { - TEST_PINK_NOISE = 1, - TEST_SINE, -@@ -100,6 +104,11 @@ static const char *given_test_wav_file = - static char *wav_file_dir = SOUNDSDIR; - static int debug = 0; - -+#ifdef CONFIG_SUPPORT_CHMAP -+static snd_pcm_chmap_t *channel_map; -+static int channel_map_set; -+#endif -+ - static const char *const channel_name[MAX_CHANNELS] = { - /* 0 */ N_("Front Left"), - /* 1 */ N_("Front Right"), -@@ -143,6 +152,65 @@ static const int channels8[] = { - 6, /* Side Left */ - 5, /* LFE */ - }; -+ -+static int get_mapped_channel(int chn) -+{ -+#ifdef CONFIG_SUPPORT_CHMAP -+ static const int maps[MAX_CHANNELS] = { -+ SND_CHMAP_FL, -+ SND_CHMAP_FR, -+ SND_CHMAP_RL, -+ SND_CHMAP_RR, -+ SND_CHMAP_FC, -+ SND_CHMAP_LFE, -+ SND_CHMAP_SL, -+ SND_CHMAP_SR, -+ }; -+ -+ if (channel_map && maps[chn]) { -+ int i; -+ for (i = 0; i < channel_map->channels; i++) { -+ if (channel_map->pos[i] == maps[chn]) -+ return i; -+ } -+ } -+#endif -+ return chn; -+} -+ -+static int get_speaker_channel(int chn) -+{ -+#ifdef CONFIG_SUPPORT_CHMAP -+ if (channel_map_set) -+ return chn; -+#endif -+ -+ switch (channels) { -+ case 4: -+ chn = channels4[chn]; -+ break; -+ case 6: -+ chn = channels6[chn]; -+ break; -+ case 8: -+ chn = channels8[chn]; -+ break; -+ } -+ -+ return get_mapped_channel(chn); -+} -+ -+static const char *get_channel_name(int chn) -+{ -+#ifdef CONFIG_SUPPORT_CHMAP -+ if (channel_map_set && chn < channel_map->channels) { -+ const char *name = snd_pcm_chmap_long_name(channel_map->pos[chn]); -+ return name ? name : "Unknown"; -+ } -+#endif -+ return gettext(channel_name[chn]); -+} -+ - static const int supported_formats[] = { - SND_PCM_FORMAT_S8, - SND_PCM_FORMAT_S16_LE, -@@ -519,6 +587,31 @@ static int set_swparams(snd_pcm_t *handl - return 0; - } - -+#ifdef CONFIG_SUPPORT_CHMAP -+static int config_chmap(snd_pcm_t *handle, const char *mapstr) -+{ -+ int err; -+ -+ if (mapstr) { -+ channel_map = snd_pcm_chmap_parse_string(mapstr); -+ if (!channel_map) { -+ fprintf(stderr, _("Unable to parse channel map string: %s\n"), mapstr); -+ return -EINVAL; -+ } -+ err = snd_pcm_set_chmap(handle, channel_map); -+ if (err < 0) { -+ fprintf(stderr, _("Unable to set channel map: %s\n"), mapstr); -+ return err; -+ } -+ channel_map_set = 1; -+ return 0; -+ } -+ -+ channel_map = snd_pcm_get_chmap(handle); -+ return 0; -+} -+#endif -+ - /* - * Underrun and suspend recovery - */ -@@ -815,6 +908,7 @@ static void help(void) - "-s,--speaker single speaker test. Values 1=Left, 2=right, etc\n" - "-w,--wavfile Use the given WAV file as a test sound\n" - "-W,--wavdir Specify the directory containing WAV files\n" -+ "-m,--chmap Specify the channel map to override\n" - "\n")); - printf(_("Recognized sample formats are:")); - for (fmt = supported_formats; *fmt >= 0; fmt++) { -@@ -837,6 +931,9 @@ int main(int argc, char *argv[]) { - double time1,time2,time3; - unsigned int n, nloops; - struct timeval tv1,tv2; -+#ifdef CONFIG_SUPPORT_CHMAP -+ const char *chmap = NULL; -+#endif - - static const struct option long_option[] = { - {"help", 0, NULL, 'h'}, -@@ -854,6 +951,9 @@ int main(int argc, char *argv[]) { - {"wavfile", 1, NULL, 'w'}, - {"wavdir", 1, NULL, 'W'}, - {"debug", 0, NULL, 'd'}, -+#ifdef CONFIG_SUPPORT_CHMAP -+ {"chmap", 1, NULL, 'm'}, -+#endif - {NULL, 0, NULL, 0 }, - }; - -@@ -872,7 +972,11 @@ int main(int argc, char *argv[]) { - while (1) { - int c; - -- if ((c = getopt_long(argc, argv, "hD:r:c:f:F:b:p:P:t:l:s:w:W:d", long_option, NULL)) < 0) -+ if ((c = getopt_long(argc, argv, "hD:r:c:f:F:b:p:P:t:l:s:w:W:d" -+#ifdef CONFIG_SUPPORT_CHMAP -+ "m:" -+#endif -+ , long_option, NULL)) < 0) - break; - - switch (c) { -@@ -963,6 +1067,11 @@ int main(int argc, char *argv[]) { - case 'd': - debug = 1; - break; -+#ifdef CONFIG_SUPPORT_CHMAP -+ case 'm': -+ chmap = optarg; -+ break; -+#endif - default: - fprintf(stderr, _("Unknown option '%c'\n"), c); - exit(EXIT_FAILURE); -@@ -1008,6 +1117,13 @@ int main(int argc, char *argv[]) { - snd_pcm_close(handle); - exit(EXIT_FAILURE); - } -+ -+#ifdef CONFIG_SUPPORT_CHMAP -+ err = config_chmap(handle, chmap); -+ if (err < 0) -+ exit(EXIT_FAILURE); -+#endif -+ - if (debug) { - snd_output_t *log; - err = snd_output_stdio_attach(&log, stderr, 0); -@@ -1038,17 +1154,8 @@ int main(int argc, char *argv[]) { - - gettimeofday(&tv1, NULL); - for(chn = 0; chn < channels; chn++) { -- int channel=chn; -- if (channels == 4) { -- channel=channels4[chn]; -- } -- if (channels == 6) { -- channel=channels6[chn]; -- } -- if (channels == 8) { -- channel=channels8[chn]; -- } -- printf(" %d - %s\n", channel, gettext(channel_name[channel])); -+ int channel = get_speaker_channel(chn); -+ printf(" %d - %s\n", channel, get_channel_name(channel)); - - err = write_loop(handle, channel, ((rate*3)/period_size), frames); - -@@ -1066,13 +1173,15 @@ int main(int argc, char *argv[]) { - printf(_("Time per period = %lf\n"), time3 ); - } - } else { -+ chn = get_speaker_channel(speaker - 1); -+ - if (test_type == TEST_WAV) { -- if (setup_wav_file(speaker - 1) < 0) -+ if (setup_wav_file(chn) < 0) - exit(EXIT_FAILURE); - } - -- printf(" - %s\n", gettext(channel_name[speaker-1])); -- err = write_loop(handle, speaker-1, ((rate*5)/period_size), frames); -+ printf(" - %s\n", get_channel_name(chn)); -+ err = write_loop(handle, chn, ((rate*5)/period_size), frames); - - if (err < 0) { - fprintf(stderr, _("Transfer failed: %s\n"), snd_strerror(err)); diff --git a/0002-aplay-Add-support-for-channel-mapping.patch b/0002-aplay-Add-support-for-channel-mapping.patch deleted file mode 100644 index c8cc800..0000000 --- a/0002-aplay-Add-support-for-channel-mapping.patch +++ /dev/null @@ -1,106 +0,0 @@ -From a9add2252f44fae3eb0ce5470cb842f220fb0454 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Tue, 11 Sep 2012 12:20:55 +0200 -Subject: [PATCH 2/5] aplay: Add support for channel mapping - -With -m option, user can specify the order of channel map. -As of this commit, it just tries to override the channel map, thus it -works only on devices that support the channel map override like HDMI. -Adjusting the channel order in aplay itself will be added later. - -Signed-off-by: Takashi Iwai ---- - aplay/aplay.c | 40 ++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 38 insertions(+), 2 deletions(-) - ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -54,6 +54,10 @@ - #include "formats.h" - #include "version.h" - -+#ifdef SND_CHMAP_API_VERSION -+#define CONFIG_SUPPORT_CHMAP 1 -+#endif -+ - #ifndef LLONG_MAX - #define LLONG_MAX 9223372036854775807LL - #endif -@@ -140,6 +144,10 @@ static char *pidfile_name = NULL; - FILE *pidf = NULL; - static int pidfile_written = 0; - -+#ifdef CONFIG_SUPPORT_CHMAP -+static snd_pcm_chmap_t *channel_map = NULL; -+#endif -+ - /* needed prototypes */ - - static void done_stdin(void); -@@ -227,7 +235,9 @@ _("Usage: %s [OPTION]... [FILE]...\n" - " --process-id-file write the process ID here\n" - " --use-strftime apply the strftime facility to the output file name\n" - " --dump-hw-params dump hw_params of the device\n" --" --fatal-errors treat all errors as fatal\n") -+" --fatal-errors treat all errors as fatal\n" -+"-m, --chmap=ch1,ch2,.. Give the channel map to override\n" -+ ) - , command); - printf(_("Recognized sample formats are:")); - for (k = 0; k < SND_PCM_FORMAT_LAST; ++k) { -@@ -428,7 +438,11 @@ enum { - int main(int argc, char *argv[]) - { - int option_index; -- static const char short_options[] = "hnlLD:qt:c:f:r:d:MNF:A:R:T:B:vV:IPCi"; -+ static const char short_options[] = "hnlLD:qt:c:f:r:d:MNF:A:R:T:B:vV:IPCi" -+#ifdef CONFIG_SUPPORT_CHMAP -+ "m:" -+#endif -+ ; - static const struct option long_options[] = { - {"help", 0, 0, 'h'}, - {"version", 0, 0, OPT_VERSION}, -@@ -469,6 +483,9 @@ int main(int argc, char *argv[]) - {"interactive", 0, 0, 'i'}, - {"dump-hw-params", 0, 0, OPT_DUMP_HWPARAMS}, - {"fatal-errors", 0, 0, OPT_FATAL_ERRORS}, -+#ifdef CONFIG_SUPPORT_CHMAP -+ {"chmap", 1, 0, 'm'}, -+#endif - {0, 0, 0, 0} - }; - char *pcm_name = "default"; -@@ -676,6 +693,15 @@ int main(int argc, char *argv[]) - case OPT_FATAL_ERRORS: - fatal_errors = 1; - break; -+#ifdef CONFIG_SUPPORT_CHMAP -+ case 'm': -+ channel_map = snd_pcm_chmap_parse_string(optarg); -+ if (!channel_map) { -+ fprintf(stderr, _("Unable to parse channel map string: %s\n"), optarg); -+ return 1; -+ } -+ break; -+#endif - default: - fprintf(stderr, _("Try `%s --help' for more information.\n"), command); - return 1; -@@ -1206,6 +1232,16 @@ static void set_params(void) - prg_exit(EXIT_FAILURE); - } - -+#ifdef CONFIG_SUPPORT_CHMAP -+ if (channel_map) { -+ err = snd_pcm_set_chmap(handle, channel_map); -+ if (err < 0) { -+ error(_("Unable to set channel map")); -+ prg_exit(EXIT_FAILURE); -+ } -+ } -+#endif -+ - if (verbose) - snd_pcm_dump(handle, log); - diff --git a/0003-aplay-More-support-for-channel-map-option.patch b/0003-aplay-More-support-for-channel-map-option.patch deleted file mode 100644 index 11af6f7..0000000 --- a/0003-aplay-More-support-for-channel-map-option.patch +++ /dev/null @@ -1,244 +0,0 @@ -From 000bf230cfb3b0abe88d27701dd77982675126ec Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 20 Sep 2012 13:53:46 +0200 -Subject: [PATCH 3/5] aplay: More support for channel map option - -Now aplay tries to follow the given channel map by rearranging the -channels even when the channel map override isn't allowed but if the -device is still capable to return a channel map. - -Also update the man page appropriately. - -Signed-off-by: Takashi Iwai ---- - aplay/aplay.1 | 11 ++++ - aplay/aplay.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- - 2 files changed, 149 insertions(+), 11 deletions(-) - ---- a/aplay/aplay.1 -+++ b/aplay/aplay.1 -@@ -141,6 +141,17 @@ by typing arecord. - Allow interactive operation via stdin. - Currently only pause/resume via space or enter key is implemented. - .TP -+\fI-m, \-\-chmap=ch1,ch2,...\fP -+Give the channel map to override or follow. Pass channel position -+strings like \fIFL\fP, \fIFR\fP, etc. -+ -+If a device supports the override of the channel map, \fBaplay\fP -+tries to pass the given channel map. -+If it doesn't support the channel map override but still it provides -+the channel map information, \fBaplay\fP tries to rearrange the -+channel order in the buffer to match with the returned channel map -+from the device. -+.TP - \fI\-\-disable\-resample\fP - Disable automatic rate resample. - .TP ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -145,7 +145,8 @@ FILE *pidf = NULL; - static int pidfile_written = 0; - - #ifdef CONFIG_SUPPORT_CHMAP --static snd_pcm_chmap_t *channel_map = NULL; -+static snd_pcm_chmap_t *channel_map = NULL; /* chmap to override */ -+static unsigned int *hw_map = NULL; /* chmap to follow */ - #endif - - /* needed prototypes */ -@@ -222,6 +223,7 @@ _("Usage: %s [OPTION]... [FILE]...\n" - "-V, --vumeter=TYPE enable VU meter (TYPE: mono or stereo)\n" - "-I, --separate-channels one file for each channel\n" - "-i, --interactive allow interactive operation from stdin\n" -+"-m, --chmap=ch1,ch2,.. Give the channel map to override or follow\n" - " --disable-resample disable automatic rate resample\n" - " --disable-channels disable automatic channel conversions\n" - " --disable-format disable automatic format conversions\n" -@@ -236,7 +238,6 @@ _("Usage: %s [OPTION]... [FILE]...\n" - " --use-strftime apply the strftime facility to the output file name\n" - " --dump-hw-params dump hw_params of the device\n" - " --fatal-errors treat all errors as fatal\n" --"-m, --chmap=ch1,ch2,.. Give the channel map to override\n" - ) - , command); - printf(_("Recognized sample formats are:")); -@@ -1083,6 +1084,74 @@ static void show_available_sample_format - } - } - -+#ifdef CONFIG_SUPPORT_CHMAP -+static int setup_chmap(void) -+{ -+ snd_pcm_chmap_t *chmap = channel_map; -+ char mapped[hwparams.channels]; -+ snd_pcm_chmap_t *hw_chmap; -+ unsigned int ch, i; -+ int err; -+ -+ if (!chmap) -+ return 0; -+ -+ if (chmap->channels != hwparams.channels) { -+ error(_("Channel numbers don't match between hw_params and channel map")); -+ return -1; -+ } -+ err = snd_pcm_set_chmap(handle, chmap); -+ if (!err) -+ return 0; -+ -+ hw_chmap = snd_pcm_get_chmap(handle); -+ if (!hw_chmap) { -+ fprintf(stderr, _("Warning: unable to get channel map\n")); -+ return 0; -+ } -+ -+ if (hw_chmap->channels == chmap->channels && -+ !memcmp(hw_chmap, chmap, 4 * (chmap->channels + 1))) { -+ /* maps are identical, so no need to convert */ -+ free(hw_chmap); -+ return 0; -+ } -+ -+ hw_map = calloc(hwparams.channels, sizeof(int)); -+ if (!hw_map) { -+ error(_("not enough memory")); -+ return -1; -+ } -+ -+ memset(mapped, 0, sizeof(mapped)); -+ for (ch = 0; ch < hw_chmap->channels; ch++) { -+ if (chmap->pos[ch] == hw_chmap->pos[ch]) { -+ mapped[ch] = 1; -+ hw_map[ch] = ch; -+ continue; -+ } -+ for (i = 0; i < hw_chmap->channels; i++) { -+ if (!mapped[i] && chmap->pos[ch] == hw_chmap->pos[i]) { -+ mapped[i] = 1; -+ hw_map[ch] = i; -+ break; -+ } -+ } -+ if (i >= hw_chmap->channels) { -+ char buf[256]; -+ error(_("Channel %d doesn't match with hw_parmas"), ch); -+ snd_pcm_chmap_print(hw_chmap, sizeof(buf), buf); -+ fprintf(stderr, "hardware chmap = %s\n", buf); -+ return -1; -+ } -+ } -+ free(hw_chmap); -+ return 0; -+} -+#else -+#define setup_chmap() 0 -+#endif -+ - static void set_params(void) - { - snd_pcm_hw_params_t *params; -@@ -1232,15 +1301,8 @@ static void set_params(void) - prg_exit(EXIT_FAILURE); - } - --#ifdef CONFIG_SUPPORT_CHMAP -- if (channel_map) { -- err = snd_pcm_set_chmap(handle, channel_map); -- if (err < 0) { -- error(_("Unable to set channel map")); -- prg_exit(EXIT_FAILURE); -- } -- } --#endif -+ if (setup_chmap()) -+ prg_exit(EXIT_FAILURE); - - if (verbose) - snd_pcm_dump(handle, log); -@@ -1743,6 +1805,69 @@ static void do_test_position(void) - } - - /* -+ */ -+#ifdef CONFIG_SUPPORT_CHMAP -+static u_char *remap_data(u_char *data, size_t count) -+{ -+ static u_char *tmp, *src, *dst; -+ static size_t tmp_size; -+ size_t sample_bytes = bits_per_sample / 8; -+ size_t step = bits_per_frame / 8; -+ size_t chunk_bytes; -+ unsigned int ch, i; -+ -+ if (!hw_map) -+ return data; -+ -+ chunk_bytes = count * bits_per_frame / 8; -+ if (tmp_size < chunk_bytes) { -+ free(tmp); -+ tmp = malloc(chunk_bytes); -+ if (!tmp) { -+ error(_("not enough memory")); -+ exit(1); -+ } -+ tmp_size = count; -+ } -+ -+ src = data; -+ dst = tmp; -+ for (i = 0; i < count; i++) { -+ for (ch = 0; ch < hwparams.channels; ch++) { -+ memcpy(dst, src + sample_bytes * hw_map[ch], -+ sample_bytes); -+ dst += sample_bytes; -+ } -+ src += step; -+ } -+ return tmp; -+} -+ -+static u_char **remap_datav(u_char **data, size_t count) -+{ -+ static u_char **tmp; -+ unsigned int ch; -+ -+ if (!hw_map) -+ return data; -+ -+ if (!tmp) { -+ tmp = malloc(sizeof(*tmp) * hwparams.channels); -+ if (!tmp) { -+ error(_("not enough memory")); -+ exit(1); -+ } -+ for (ch = 0; ch < hwparams.channels; ch++) -+ tmp[ch] = data[hw_map[ch]]; -+ } -+ return tmp; -+} -+#else -+#define remap_data(data, count) (data) -+#define remapv_data(data, count) (data) -+#endif -+ -+/* - * write function - */ - -@@ -1755,6 +1880,7 @@ static ssize_t pcm_write(u_char *data, s - snd_pcm_format_set_silence(hwparams.format, data + count * bits_per_frame / 8, (chunk_size - count) * hwparams.channels); - count = chunk_size; - } -+ data = remap_data(data, count); - while (count > 0) { - if (test_position) - do_test_position(); -@@ -1797,6 +1923,7 @@ static ssize_t pcm_writev(u_char **data, - snd_pcm_format_set_silence(hwparams.format, data[channel] + offset * bits_per_sample / 8, remaining); - count = chunk_size; - } -+ data = remap_datav(data, count); - while (count > 0) { - unsigned int channel; - void *bufs[channels]; diff --git a/0004-speaker-test-Update-man-page-for-chmap-option.patch b/0004-speaker-test-Update-man-page-for-chmap-option.patch deleted file mode 100644 index 1420364..0000000 --- a/0004-speaker-test-Update-man-page-for-chmap-option.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 7b14c00b56784f69ecc954a2de36e0a058fc8849 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 20 Sep 2012 14:00:02 +0200 -Subject: [PATCH 4/5] speaker-test: Update man page for chmap option - -Signed-off-by: Takashi Iwai ---- - speaker-test/speaker-test.1 | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/speaker-test/speaker-test.1 -+++ b/speaker-test/speaker-test.1 -@@ -131,6 +131,11 @@ Use the given WAV file for the playback - Specify the directory containing WAV files for playback. - The default path is \fI/usr/share/sounds/alsa\fP. - -+.TP -+\fB\-m\fP | \fB\-\-chmap\fP -+Pass the channel map to override. -+If the playback in a specific channel order or channel positions is -+required, pass the channel position strings to this option. - - .SH USAGE EXAMPLES - -@@ -159,6 +164,10 @@ To do a 2-speaker test using the spdif ( - speaker-test -Dplug:spdif -c2 - .EE - -+Play in the order of front-right and front-left from the front PCM -+.EX -+ speaker-test -Dplug:front -c2 -mFR,FL -+.EE - - .SH SEE ALSO - .BR aplay(1) diff --git a/0005-aplay-fix-typo-silence-warning.patch b/0005-aplay-fix-typo-silence-warning.patch deleted file mode 100644 index 90f0b3d..0000000 --- a/0005-aplay-fix-typo-silence-warning.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 6017849f1b9d406ac2c882ddbde408ada38c3d61 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Mon, 24 Sep 2012 16:18:54 +0200 -Subject: [PATCH 5/5] aplay: fix typo & silence warning.. - -Signed-off-by: Jaroslav Kysela ---- - aplay/aplay.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -1864,7 +1864,7 @@ static u_char **remap_datav(u_char **dat - } - #else - #define remap_data(data, count) (data) --#define remapv_data(data, count) (data) -+#define remap_datav(data, count) (data) - #endif - - /* -@@ -2122,7 +2122,6 @@ static void voc_play(int fd, int ofs, ch - u_char *data, *buf; - char was_extended = 0, output = 0; - u_short *sp, repeat = 0; -- size_t silence; - off64_t filepos = 0; - - #define COUNT(x) nextblock -= x; in_buffer -= x; data += x -@@ -2226,9 +2225,12 @@ static void voc_play(int fd, int ofs, ch - COUNT1(1); - hwparams.rate = 1000000 / (256 - hwparams.rate); - set_params(); -- silence = (((size_t) * sp) * 1000) / hwparams.rate; - #if 0 -- d_printf("Silence for %d ms\n", (int) silence); -+ { -+ size_t silence; -+ silence = (((size_t) * sp) * 1000) / hwparams.rate; -+ d_printf("Silence for %d ms\n", (int) silence); -+ } - #endif - voc_write_silence(*sp); - break; diff --git a/0006-alsamixer-fix-handling-of-removed-controls.patch b/0006-alsamixer-fix-handling-of-removed-controls.patch deleted file mode 100644 index 37f839b..0000000 --- a/0006-alsamixer-fix-handling-of-removed-controls.patch +++ /dev/null @@ -1,106 +0,0 @@ -From f2826072732951b1d4e1bacd8115f9e6a98932d5 Mon Sep 17 00:00:00 2001 -From: Clemens Ladisch -Date: Fri, 19 Oct 2012 12:16:33 +0200 -Subject: [PATCH 6/9] alsamixer: fix handling of removed controls - -When we get a notification that an element has been removed, we have to -recreate our internal control representation to avoid accessing freed -memory. (And the checking for SND_CTL_EVENT_MASK_REMOVE should actually -be done correctly while we're at it.) - -Signed-off-by: Clemens Ladisch ---- - alsamixer/mainloop.c | 9 ++++++++- - alsamixer/mixer_display.c | 1 - - alsamixer/mixer_widget.c | 20 ++++++++------------ - alsamixer/mixer_widget.h | 1 + - 4 files changed, 17 insertions(+), 14 deletions(-) - -diff --git a/alsamixer/mainloop.c b/alsamixer/mainloop.c -index dbfef9b..351f57f 100644 ---- a/alsamixer/mainloop.c -+++ b/alsamixer/mainloop.c -@@ -128,8 +128,15 @@ void mainloop(void) - } - if (!active_widget) - break; -- if (controls_changed) -+ if (controls_changed) { -+ controls_changed = FALSE; -+ create_controls(); -+ control_values_changed = FALSE; - display_controls(); -+ } else if (control_values_changed) { -+ control_values_changed = FALSE; -+ display_controls(); -+ } - } - free(pollfds); - } -diff --git a/alsamixer/mixer_display.c b/alsamixer/mixer_display.c -index 8ba396a..b1f79d0 100644 ---- a/alsamixer/mixer_display.c -+++ b/alsamixer/mixer_display.c -@@ -657,7 +657,6 @@ void display_controls(void) - display_no_controls(); - } - display_scroll_indicators(); -- controls_changed = FALSE; - } - - void compute_controls_layout(void) -diff --git a/alsamixer/mixer_widget.c b/alsamixer/mixer_widget.c -index caaf777..0c2b9e0 100644 ---- a/alsamixer/mixer_widget.c -+++ b/alsamixer/mixer_widget.c -@@ -50,6 +50,7 @@ int focus_control_index; - snd_mixer_selem_id_t *current_selem_id; - unsigned int current_control_flags; - -+bool control_values_changed; - bool controls_changed; - - enum channel_mask { -@@ -59,20 +60,15 @@ enum channel_mask { - - static int elem_callback(snd_mixer_elem_t *elem, unsigned int mask) - { -- unsigned int i; -- -- if (mask & (SND_CTL_EVENT_MASK_REMOVE | -- SND_CTL_EVENT_MASK_INFO | -- SND_CTL_EVENT_MASK_VALUE)) -+ if (mask == SND_CTL_EVENT_MASK_REMOVE) { - controls_changed = TRUE; -+ } else { -+ if (mask & SND_CTL_EVENT_MASK_VALUE) -+ control_values_changed = TRUE; - -- if (mask & SND_CTL_EVENT_MASK_INFO) -- for (i = 0; i < controls_count; ++i) -- if (controls[i].elem == elem) { -- controls[i].flags &= ~IS_ACTIVE; -- if (snd_mixer_selem_is_active(controls[i].elem)) -- controls[i].flags |= IS_ACTIVE; -- } -+ if (mask & SND_CTL_EVENT_MASK_INFO) -+ controls_changed = TRUE; -+ } - - return 0; - } -diff --git a/alsamixer/mixer_widget.h b/alsamixer/mixer_widget.h -index da8628e..086611c 100644 ---- a/alsamixer/mixer_widget.h -+++ b/alsamixer/mixer_widget.h -@@ -24,6 +24,7 @@ extern int focus_control_index; - extern snd_mixer_selem_id_t *current_selem_id; - extern unsigned int current_control_flags; - -+extern bool control_values_changed; - extern bool controls_changed; - - void create_mixer_object(struct snd_mixer_selem_regopt *selem_regopt); --- -1.8.0.1 - diff --git a/0007-aplay-Show-usage-if-no-parameter-is-passed.patch b/0007-aplay-Show-usage-if-no-parameter-is-passed.patch deleted file mode 100644 index 85f98bc..0000000 --- a/0007-aplay-Show-usage-if-no-parameter-is-passed.patch +++ /dev/null @@ -1,52 +0,0 @@ -From c6614dbdab1cbe541e7d6cd29f3922510e0b6981 Mon Sep 17 00:00:00 2001 -From: Fabio Estevam -Date: Tue, 13 Nov 2012 10:05:39 -0200 -Subject: [PATCH 7/9] aplay: Show usage if no parameter is passed - -When aplay/arecord are called without any argument the application hangs forever. - -Instead of hanging, print the usage and exit. - -Signed-off-by: Fabio Estevam -Signed-off-by: Takashi Iwai ---- - aplay/aplay.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/aplay/aplay.c b/aplay/aplay.c -index 741979a..f35f603 100644 ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -493,6 +493,7 @@ int main(int argc, char *argv[]) - int tmp, err, c; - int do_device_list = 0, do_pcm_list = 0; - snd_pcm_info_t *info; -+ FILE *direction; - - #ifdef ENABLE_NLS - setlocale(LC_ALL, ""); -@@ -511,14 +512,21 @@ int main(int argc, char *argv[]) - file_type = FORMAT_WAVE; - command = "arecord"; - start_delay = 1; -+ direction = stdout; - } else if (strstr(argv[0], "aplay")) { - stream = SND_PCM_STREAM_PLAYBACK; - command = "aplay"; -+ direction = stdin; - } else { - error(_("command should be named either arecord or aplay")); - return 1; - } - -+ if (isatty(fileno(direction)) && (argc == 1)) { -+ usage(command); -+ return 1; -+ } -+ - chunk_size = -1; - rhwparams.format = DEFAULT_FORMAT; - rhwparams.rate = DEFAULT_SPEED; --- -1.8.0.1 - diff --git a/0008-amixer-fix-rounding-of-relative-changes.patch b/0008-amixer-fix-rounding-of-relative-changes.patch deleted file mode 100644 index ad0df38..0000000 --- a/0008-amixer-fix-rounding-of-relative-changes.patch +++ /dev/null @@ -1,35 +0,0 @@ -From da1c24a24c699125aedc8d4f7c97d974b868dacf Mon Sep 17 00:00:00 2001 -From: Clemens Ladisch -Date: Tue, 13 Nov 2012 21:54:20 +0100 -Subject: [PATCH 8/9] amixer: fix rounding of relative changes - -When doing control changes by a relative amount, amixer used the wrong -rounding direction, which would make it possible to stay at the same raw -value if the step was not big enough to reach the next value. - -Reported-by: Honza Javorek -Signed-off-by: Clemens Ladisch ---- - amixer/amixer.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/amixer/amixer.c b/amixer/amixer.c -index a0a7387..48ed1b2 100644 ---- a/amixer/amixer.c -+++ b/amixer/amixer.c -@@ -425,10 +425,10 @@ static int set_volume_simple(snd_mixer_elem_t *elem, - invalid = 1; - if (*p == '+') { - val = orig + val; -- correct = -1; -+ correct = 1; - } else { - val = orig - val; -- correct = 1; -+ correct = -1; - } - } - p++; --- -1.8.0.1 - diff --git a/0009-amixer-Fix-parsing-container-TLV-entries.patch b/0009-amixer-Fix-parsing-container-TLV-entries.patch deleted file mode 100644 index a8b55c6..0000000 --- a/0009-amixer-Fix-parsing-container-TLV-entries.patch +++ /dev/null @@ -1,29 +0,0 @@ -From d6da86117bddeb5007058bfd599c4839858c7ca9 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Mon, 26 Nov 2012 16:13:57 +0100 -Subject: [PATCH 9/9] amixer: Fix parsing container TLV entries - -Fix the wrong calculation of the size of a container TLV entry, which -resulted in "TLV size error" messages. - -Signed-off-by: Takashi Iwai ---- - amixer/amixer.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/amixer/amixer.c b/amixer/amixer.c -index 48ed1b2..5d5afce 100644 ---- a/amixer/amixer.c -+++ b/amixer/amixer.c -@@ -531,7 +531,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_ - printf("TLV size error in compound!\n"); - return; - } -- decode_tlv(spaces + 2, tlv + idx, tlv[idx+1]); -+ decode_tlv(spaces + 2, tlv + idx, tlv[idx+1] + 8); - idx += 2 + (tlv[1] + sizeof(unsigned int) - 1) / sizeof(unsigned int); - } - break; --- -1.8.0.1 - diff --git a/0010-alsaloop-Make-alsaloop-working-without-libsamplerate.patch b/0010-alsaloop-Make-alsaloop-working-without-libsamplerate.patch deleted file mode 100644 index 9614534..0000000 --- a/0010-alsaloop-Make-alsaloop-working-without-libsamplerate.patch +++ /dev/null @@ -1,60 +0,0 @@ -From b7ea343820a4616b5f6e3b200f776ab742893039 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Fri, 30 Nov 2012 14:35:31 +0100 -Subject: [PATCH] alsaloop: Make alsaloop working without libsamplerate - -When alsaloop is built with libsamplerate, it quits immediately with - No libsamplerate suppor -message. It's because the check of -A option and it's set as default -non-zero value. - -Signed-off-by: Takashi Iwai ---- - alsaloop/alsaloop.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/alsaloop/alsaloop.c b/alsaloop/alsaloop.c -index 8710dd1..6e94564 100644 ---- a/alsaloop/alsaloop.c -+++ b/alsaloop/alsaloop.c -@@ -387,7 +387,9 @@ static int parse_config(int argc, char *argv[], snd_output_t *output, - int arg_nblock = 0; - int arg_effect = 0; - int arg_resample = 0; -+#ifdef USE_SAMPLERATE - int arg_samplerate = SRC_SINC_FASTEST + 1; -+#else - int arg_sync = SYNC_TYPE_AUTO; - int arg_slave = SLAVE_TYPE_AUTO; - int arg_thread = 0; -@@ -474,6 +476,7 @@ static int parse_config(int argc, char *argv[], snd_output_t *output, - case 'n': - arg_resample = 1; - break; -+#ifdef USE_SAMPLERATE - case 'A': - if (strcasecmp(optarg, "sincbest") == 0) - arg_samplerate = SRC_SINC_BEST_QUALITY; -@@ -491,6 +494,7 @@ static int parse_config(int argc, char *argv[], snd_output_t *output, - arg_sync = SRC_SINC_FASTEST; - arg_samplerate += 1; - break; -+#endif - case 'S': - if (strcasecmp(optarg, "samplerate") == 0) - arg_sync = SYNC_TYPE_SAMPLERATE; -@@ -610,11 +614,6 @@ static int parse_config(int argc, char *argv[], snd_output_t *output, - loop->src_enable = arg_samplerate > 0; - if (loop->src_enable) - loop->src_converter_type = arg_samplerate - 1; --#else -- if (arg_samplerate > 0) { -- logit(LOG_CRIT, "No libsamplerate support.\n"); -- exit(EXIT_FAILURE); -- } - #endif - set_loop_time(loop, arg_loop_time); - add_loop(loop); --- -1.8.0.1 - diff --git a/0011-alsaloop-Fix-missing-endif.patch b/0011-alsaloop-Fix-missing-endif.patch deleted file mode 100644 index c965274..0000000 --- a/0011-alsaloop-Fix-missing-endif.patch +++ /dev/null @@ -1,28 +0,0 @@ -From c7b9d3e39431eddd3a205a3f583a07884a90bb1b Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Fri, 30 Nov 2012 14:53:12 +0100 -Subject: [PATCH] alsaloop: Fix missing #endif - -Sorry, forgotten. - -Signed-off-by: Takashi Iwai ---- - alsaloop/alsaloop.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/alsaloop/alsaloop.c b/alsaloop/alsaloop.c -index 6e94564..e1a36d2 100644 ---- a/alsaloop/alsaloop.c -+++ b/alsaloop/alsaloop.c -@@ -389,7 +389,7 @@ static int parse_config(int argc, char *argv[], snd_output_t *output, - int arg_resample = 0; - #ifdef USE_SAMPLERATE - int arg_samplerate = SRC_SINC_FASTEST + 1; --#else -+#endif - int arg_sync = SYNC_TYPE_AUTO; - int arg_slave = SLAVE_TYPE_AUTO; - int arg_thread = 0; --- -1.8.0.1 - diff --git a/0012-aplay-Add-the-support-for-big-endian-WAV-format-RIFX.patch b/0012-aplay-Add-the-support-for-big-endian-WAV-format-RIFX.patch deleted file mode 100644 index 063a3c4..0000000 --- a/0012-aplay-Add-the-support-for-big-endian-WAV-format-RIFX.patch +++ /dev/null @@ -1,196 +0,0 @@ -From de61ec66fe303888bc5db49b5989e37bb1ddfca5 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 13 Dec 2012 10:53:19 +0100 -Subject: [PATCH 12/15] aplay: Add the support for big-endian WAV format (RIFX) - -Signed-off-by: Takashi Iwai ---- - aplay/aplay.c | 95 ++++++++++++++++++++++++++++++++++++++------------------ - aplay/formats.h | 7 ++++ - 2 files changed, 73 insertions(+), 29 deletions(-) - ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -892,11 +892,20 @@ static ssize_t test_wavefile(int fd, u_c - WaveFmtBody *f; - WaveChunkHeader *c; - u_int type, len; -+ unsigned short format, channels; -+ int big_endian, native_format; - - if (size < sizeof(WaveHeader)) - return -1; -- if (h->magic != WAV_RIFF || h->type != WAV_WAVE) -+ if (h->magic == WAV_RIFF) -+ big_endian = 0; -+ else if (h->magic == WAV_RIFX) -+ big_endian = 1; -+ else - return -1; -+ if (h->type != WAV_WAVE) -+ return -1; -+ - if (size > sizeof(WaveHeader)) { - check_wavefile_space(buffer, size - sizeof(WaveHeader), blimit); - memcpy(buffer, _buffer + sizeof(WaveHeader), size - sizeof(WaveHeader)); -@@ -907,7 +916,7 @@ static ssize_t test_wavefile(int fd, u_c - test_wavefile_read(fd, buffer, &size, sizeof(WaveChunkHeader), __LINE__); - c = (WaveChunkHeader*)buffer; - type = c->type; -- len = LE_INT(c->length); -+ len = TO_CPU_INT(c->length, big_endian); - len += len % 2; - if (size > sizeof(WaveChunkHeader)) - memmove(buffer, buffer + sizeof(WaveChunkHeader), size - sizeof(WaveChunkHeader)); -@@ -929,7 +938,8 @@ static ssize_t test_wavefile(int fd, u_c - check_wavefile_space(buffer, len, blimit); - test_wavefile_read(fd, buffer, &size, len, __LINE__); - f = (WaveFmtBody*) buffer; -- if (LE_SHORT(f->format) == WAV_FMT_EXTENSIBLE) { -+ format = TO_CPU_SHORT(f->format, big_endian); -+ if (format == WAV_FMT_EXTENSIBLE) { - WaveFmtExtensibleBody *fe = (WaveFmtExtensibleBody*)buffer; - if (len < sizeof(WaveFmtExtensibleBody)) { - error(_("unknown length of extensible 'fmt ' chunk (read %u, should be %u at least)"), -@@ -940,19 +950,20 @@ static ssize_t test_wavefile(int fd, u_c - error(_("wrong format tag in extensible 'fmt ' chunk")); - prg_exit(EXIT_FAILURE); - } -- f->format = fe->guid_format; -+ format = TO_CPU_SHORT(fe->guid_format, big_endian); - } -- if (LE_SHORT(f->format) != WAV_FMT_PCM && -- LE_SHORT(f->format) != WAV_FMT_IEEE_FLOAT) { -- error(_("can't play WAVE-file format 0x%04x which is not PCM or FLOAT encoded"), LE_SHORT(f->format)); -+ if (format != WAV_FMT_PCM && -+ format != WAV_FMT_IEEE_FLOAT) { -+ error(_("can't play WAVE-file format 0x%04x which is not PCM or FLOAT encoded"), format); - prg_exit(EXIT_FAILURE); - } -- if (LE_SHORT(f->channels) < 1) { -- error(_("can't play WAVE-files with %d tracks"), LE_SHORT(f->channels)); -+ channels = TO_CPU_SHORT(f->channels, big_endian); -+ if (channels < 1) { -+ error(_("can't play WAVE-files with %d tracks"), channels); - prg_exit(EXIT_FAILURE); - } -- hwparams.channels = LE_SHORT(f->channels); -- switch (LE_SHORT(f->bit_p_spl)) { -+ hwparams.channels = channels; -+ switch (TO_CPU_SHORT(f->bit_p_spl, big_endian)) { - case 8: - if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != SND_PCM_FORMAT_U8) -@@ -960,43 +971,69 @@ static ssize_t test_wavefile(int fd, u_c - hwparams.format = SND_PCM_FORMAT_U8; - break; - case 16: -+ if (big_endian) -+ native_format = SND_PCM_FORMAT_S16_BE; -+ else -+ native_format = SND_PCM_FORMAT_S16_LE; - if (hwparams.format != DEFAULT_FORMAT && -- hwparams.format != SND_PCM_FORMAT_S16_LE) -- fprintf(stderr, _("Warning: format is changed to S16_LE\n")); -- hwparams.format = SND_PCM_FORMAT_S16_LE; -+ hwparams.format != native_format) -+ fprintf(stderr, _("Warning: format is changed to %s\n"), -+ snd_pcm_format_name(native_format)); -+ hwparams.format = native_format; - break; - case 24: -- switch (LE_SHORT(f->byte_p_spl) / hwparams.channels) { -+ switch (TO_CPU_SHORT(f->byte_p_spl, big_endian) / hwparams.channels) { - case 3: -+ if (big_endian) -+ native_format = SND_PCM_FORMAT_S24_3BE; -+ else -+ native_format = SND_PCM_FORMAT_S24_3LE; - if (hwparams.format != DEFAULT_FORMAT && -- hwparams.format != SND_PCM_FORMAT_S24_3LE) -- fprintf(stderr, _("Warning: format is changed to S24_3LE\n")); -- hwparams.format = SND_PCM_FORMAT_S24_3LE; -+ hwparams.format != native_format) -+ fprintf(stderr, _("Warning: format is changed to %s\n"), -+ snd_pcm_format_name(native_format)); -+ hwparams.format = native_format; - break; - case 4: -+ if (big_endian) -+ native_format = SND_PCM_FORMAT_S24_BE; -+ else -+ native_format = SND_PCM_FORMAT_S24_LE; - if (hwparams.format != DEFAULT_FORMAT && -- hwparams.format != SND_PCM_FORMAT_S24_LE) -- fprintf(stderr, _("Warning: format is changed to S24_LE\n")); -- hwparams.format = SND_PCM_FORMAT_S24_LE; -+ hwparams.format != native_format) -+ fprintf(stderr, _("Warning: format is changed to %s\n"), -+ snd_pcm_format_name(native_format)); -+ hwparams.format = native_format; - break; - default: - error(_(" can't play WAVE-files with sample %d bits in %d bytes wide (%d channels)"), -- LE_SHORT(f->bit_p_spl), LE_SHORT(f->byte_p_spl), hwparams.channels); -+ TO_CPU_SHORT(f->bit_p_spl, big_endian), -+ TO_CPU_SHORT(f->byte_p_spl, big_endian), -+ hwparams.channels); - prg_exit(EXIT_FAILURE); - } - break; - case 32: -- if (LE_SHORT(f->format) == WAV_FMT_PCM) -- hwparams.format = SND_PCM_FORMAT_S32_LE; -- else if (LE_SHORT(f->format) == WAV_FMT_IEEE_FLOAT) -- hwparams.format = SND_PCM_FORMAT_FLOAT_LE; -+ if (format == WAV_FMT_PCM) { -+ if (big_endian) -+ native_format = SND_PCM_FORMAT_S32_BE; -+ else -+ native_format = SND_PCM_FORMAT_S32_LE; -+ hwparams.format = native_format; -+ } else if (format == WAV_FMT_IEEE_FLOAT) { -+ if (big_endian) -+ native_format = SND_PCM_FORMAT_FLOAT_BE; -+ else -+ native_format = SND_PCM_FORMAT_FLOAT_LE; -+ hwparams.format = native_format; -+ } - break; - default: - error(_(" can't play WAVE-files with sample %d bits wide"), -- LE_SHORT(f->bit_p_spl)); -+ TO_CPU_SHORT(f->bit_p_spl, big_endian)); - prg_exit(EXIT_FAILURE); - } -- hwparams.rate = LE_INT(f->sample_fq); -+ hwparams.rate = TO_CPU_INT(f->sample_fq, big_endian); - - if (size > len) - memmove(buffer, buffer + len, size - len); -@@ -1009,7 +1046,7 @@ static ssize_t test_wavefile(int fd, u_c - test_wavefile_read(fd, buffer, &size, sizeof(WaveChunkHeader), __LINE__); - c = (WaveChunkHeader*)buffer; - type = c->type; -- len = LE_INT(c->length); -+ len = TO_CPU_INT(c->length, big_endian); - if (size > sizeof(WaveChunkHeader)) - memmove(buffer, buffer + sizeof(WaveChunkHeader), size - sizeof(WaveChunkHeader)); - size -= sizeof(WaveChunkHeader); ---- a/aplay/formats.h -+++ b/aplay/formats.h -@@ -60,7 +60,14 @@ typedef struct voc_ext_block { - #error "Wrong endian" - #endif - -+/* Note: the following macros evaluate the parameter v twice */ -+#define TO_CPU_SHORT(v, be) \ -+ ((be) ? BE_SHORT(v) : LE_SHORT(v)) -+#define TO_CPU_INT(v, be) \ -+ ((be) ? BE_INT(v) : LE_INT(v)) -+ - #define WAV_RIFF COMPOSE_ID('R','I','F','F') -+#define WAV_RIFX COMPOSE_ID('R','I','F','X') - #define WAV_WAVE COMPOSE_ID('W','A','V','E') - #define WAV_FMT COMPOSE_ID('f','m','t',' ') - #define WAV_DATA COMPOSE_ID('d','a','t','a') diff --git a/0013-configure-Fix-obsolete-AM_CONFIG_HEADER-macro.patch b/0013-configure-Fix-obsolete-AM_CONFIG_HEADER-macro.patch deleted file mode 100644 index 6a0f790..0000000 --- a/0013-configure-Fix-obsolete-AM_CONFIG_HEADER-macro.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 66d1cf74866867773bf841293cc5a9a96484e4c6 Mon Sep 17 00:00:00 2001 -From: Marko Lindqvist -Date: Wed, 16 Jan 2013 15:25:38 +0100 -Subject: [PATCH 13/15] configure: Fix obsolete AM_CONFIG_HEADER macro - -Automake-1.13 removed long obsolete AM_CONFIG_HEADER completely ( -http://lists.gnu.org/archive/html/automake/2012-12/msg00038.html ) -and errors out upon seeing it. - -Attached patch replaces it with proper AC_CONFIG_HEADERS. - -Signed-off-by: Marko Lindqvist -Signed-off-by: Takashi Iwai ---- - configure.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/configure.in -+++ b/configure.in -@@ -290,7 +290,7 @@ AC_ARG_WITH(testsound, - TESTSOUND="$dir/test.wav") - AC_SUBST(TESTSOUND) - --AM_CONFIG_HEADER(include/aconfig.h) -+AC_CONFIG_HEADERS(include/aconfig.h) - - dnl Checks for typedefs, structures, and compiler characteristics. - AC_C_CONST diff --git a/0014-speaker-test-increase-the-maximum-supported-rate-to-.patch b/0014-speaker-test-increase-the-maximum-supported-rate-to-.patch deleted file mode 100644 index b47c5ce..0000000 --- a/0014-speaker-test-increase-the-maximum-supported-rate-to-.patch +++ /dev/null @@ -1,26 +0,0 @@ -From cd39cfb480cd3ee6b771de33925094892b3be9fe Mon Sep 17 00:00:00 2001 -From: Antonio Ospite -Date: Wed, 16 Jan 2013 17:06:04 +0100 -Subject: [PATCH 14/15] speaker-test: increase the maximum supported rate to - 384000 - -There are some devices around supporting this sample rate so let's make -speaker-test capable to deal with them. - -Signed-off-by: Antonio Ospite -Signed-off-by: Takashi Iwai ---- - speaker-test/speaker-test.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/speaker-test/speaker-test.c -+++ b/speaker-test/speaker-test.c -@@ -999,7 +999,7 @@ int main(int argc, char *argv[]) { - case 'r': - rate = atoi(optarg); - rate = rate < 4000 ? 4000 : rate; -- rate = rate > 196000 ? 196000 : rate; -+ rate = rate > 384000 ? 384000 : rate; - break; - case 'c': - channels = atoi(optarg); diff --git a/0015-amixer-Fix-dB-value-outputs-in-amixer-contents.patch b/0015-amixer-Fix-dB-value-outputs-in-amixer-contents.patch deleted file mode 100644 index 829caa3..0000000 --- a/0015-amixer-Fix-dB-value-outputs-in-amixer-contents.patch +++ /dev/null @@ -1,38 +0,0 @@ -From bfcb26f9f7b893e24ebeeb76232c5cd0066d087e Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 31 Jan 2013 17:47:50 +0100 -Subject: [PATCH 15/15] amixer: Fix dB value outputs in amixer contents - -Add missing cast to signed int for DB_MINMAX* types. - -Signed-off-by: Takashi Iwai ---- - amixer/amixer.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - ---- a/amixer/amixer.c -+++ b/amixer/amixer.c -@@ -560,9 +560,9 @@ static void decode_tlv(unsigned int spac - } - } else { - printf("min="); -- print_dB(tlv[2]); -+ print_dB((int)tlv[2]); - printf(",max="); -- print_dB(tlv[3]); -+ print_dB((int)tlv[3]); - } - break; - #endif -@@ -600,9 +600,9 @@ static void decode_tlv(unsigned int spac - } - } else { - printf("min="); -- print_dB(tlv[2]); -+ print_dB((int)tlv[2]); - printf(",max="); -- print_dB(tlv[3]); -+ print_dB((int)tlv[3]); - } - break; - #endif diff --git a/alsa-utils-1.0.26.tar.bz2 b/alsa-utils-1.0.26.tar.bz2 deleted file mode 100644 index 2602bf1..0000000 --- a/alsa-utils-1.0.26.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f85f2a3aa6e78475bbe35b0cad3a8cabb99f45ebc5f37962f2137b8df8b081e7 -size 1134474 diff --git a/alsa-utils-1.0.27.tar.bz2 b/alsa-utils-1.0.27.tar.bz2 new file mode 100644 index 0000000..a7e58e9 --- /dev/null +++ b/alsa-utils-1.0.27.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f76cd77341ceb22949c4fb9d4df145483f56baa899f0621d617b8df96a45aef +size 1142833 diff --git a/alsa-utils.changes b/alsa-utils.changes index 007e352..a839b6e 100644 --- a/alsa-utils.changes +++ b/alsa-utils.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Apr 12 15:28:31 CEST 2013 - tiwai@suse.de + +- Update to version 1.0.27: + including all previous fixes; all 00*-* patches dropped + * Add support for alsactl daemon mode + * Add snd_pcm_abort() support in aplay + ------------------------------------------------------------------- Fri Feb 1 08:04:39 CET 2013 - tiwai@suse.de diff --git a/alsa-utils.spec b/alsa-utils.spec index 83d241f..b210a24 100644 --- a/alsa-utils.spec +++ b/alsa-utils.spec @@ -44,7 +44,7 @@ BuildRequires: libudev-devel BuildRequires: ncurses-devel BuildRequires: pkgconfig BuildRequires: xmlto -%define package_version 1.0.26 +%define package_version 1.0.27 Provides: alsa-conf Requires: alsa Requires: dialog @@ -52,27 +52,11 @@ Requires: pciutils Summary: Advanced Linux Sound Architecture Utilities License: GPL-2.0+ Group: Productivity/Multimedia/Sound/Players -Version: 1.0.26 +Version: 1.0.27 Release: 0 Source: ftp://ftp.alsa-project.org/pub/utils/alsa-utils-%{package_version}.tar.bz2 Source1: 01beep.conf # Patch: alsa-utils-git-fixes.diff -Patch1: 0001-speaker-test-Add-support-for-channel-mapping-API.patch -Patch2: 0002-aplay-Add-support-for-channel-mapping.patch -Patch3: 0003-aplay-More-support-for-channel-map-option.patch -Patch4: 0004-speaker-test-Update-man-page-for-chmap-option.patch -Patch5: 0005-aplay-fix-typo-silence-warning.patch -Patch6: 0006-alsamixer-fix-handling-of-removed-controls.patch -Patch7: 0007-aplay-Show-usage-if-no-parameter-is-passed.patch -Patch8: 0008-amixer-fix-rounding-of-relative-changes.patch -Patch9: 0009-amixer-Fix-parsing-container-TLV-entries.patch -Patch10: 0010-alsaloop-Make-alsaloop-working-without-libsamplerate.patch -Patch11: 0011-alsaloop-Fix-missing-endif.patch -Patch12: 0012-aplay-Add-the-support-for-big-endian-WAV-format-RIFX.patch -Patch13: 0013-configure-Fix-obsolete-AM_CONFIG_HEADER-macro.patch -Patch14: 0014-speaker-test-increase-the-maximum-supported-rate-to-.patch -Patch15: 0015-amixer-Fix-dB-value-outputs-in-amixer-contents.patch -# Patch99: alsa-utils-gettext-version-removal.diff Url: http://www.alsa-project.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -87,21 +71,6 @@ Sound Architecture. sed -i -e's/EXTRA_DIST= config.rpath /EXTRA_DIST=/' Makefile.am # rm -f po/Makefile* po/*.gmo po/*.pot po/*.header po/stamp-* # patch -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 %if %suse_version < 1020 %patch99 -p1 %endif @@ -155,6 +124,7 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/alsa %{_udevdir} %if %use_systemd %{_unitdir}/*.service +%{_unitdir}/basic.target.wants/alsa-state.service %{_unitdir}/basic.target.wants/alsa-restore.service %{_unitdir}/shutdown.target.wants/alsa-store.service %endif