forked from pool/pulseaudio
This commit is contained in:
parent
652500aa2f
commit
b0b5ce5242
@ -1,92 +0,0 @@
|
|||||||
Fix from Ubuntu:
|
|
||||||
|
|
||||||
Include fixes for potential DoS vuln from
|
|
||||||
http://pulseaudio.org/ticket/67
|
|
||||||
|
|
||||||
diff -urNad pulseaudio-0.9.5-7ubuntu1~/src/modules/module-volume-restore.c pulseaudio-0.9.5-7ubuntu1/src/modules/module-volume-restore.c
|
|
||||||
--- pulseaudio-0.9.5-7ubuntu1~/src/modules/module-volume-restore.c 2007-05-08 06:39:31.000000000 -0400
|
|
||||||
+++ pulseaudio-0.9.5-7ubuntu1/src/modules/module-volume-restore.c 2007-05-25 01:22:16.000000000 -0400
|
|
||||||
@@ -435,6 +435,7 @@
|
|
||||||
u->modified = 0;
|
|
||||||
|
|
||||||
m->userdata = u;
|
|
||||||
+ u->sink_input_hook_slot = u->source_output_hook_slot = NULL;
|
|
||||||
|
|
||||||
if (load_rules(u) < 0)
|
|
||||||
goto fail;
|
|
||||||
diff -urNad pulseaudio-0.9.5-7ubuntu1~/src/modules/rtp/sap.c pulseaudio-0.9.5-7ubuntu1/src/modules/rtp/sap.c
|
|
||||||
--- pulseaudio-0.9.5-7ubuntu1~/src/modules/rtp/sap.c 2007-05-08 06:39:32.000000000 -0400
|
|
||||||
+++ pulseaudio-0.9.5-7ubuntu1/src/modules/rtp/sap.c 2007-05-25 01:22:29.000000000 -0400
|
|
||||||
@@ -142,9 +142,6 @@
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (!size)
|
|
||||||
- return 0;
|
|
||||||
-
|
|
||||||
buf = pa_xnew(char, size+1);
|
|
||||||
buf[size] = 0;
|
|
||||||
|
|
||||||
diff -urNad pulseaudio-0.9.5-7ubuntu1~/src/pulsecore/protocol-native.c pulseaudio-0.9.5-7ubuntu1/src/pulsecore/protocol-native.c
|
|
||||||
--- pulseaudio-0.9.5-7ubuntu1~/src/pulsecore/protocol-native.c 2007-05-08 06:39:33.000000000 -0400
|
|
||||||
+++ pulseaudio-0.9.5-7ubuntu1/src/pulsecore/protocol-native.c 2007-05-25 01:19:40.000000000 -0400
|
|
||||||
@@ -760,7 +760,8 @@
|
|
||||||
CHECK_VALIDITY(c->pstream, pa_cvolume_valid(&volume), tag, PA_ERR_INVALID);
|
|
||||||
CHECK_VALIDITY(c->pstream, map.channels == ss.channels && volume.channels == ss.channels, tag, PA_ERR_INVALID);
|
|
||||||
CHECK_VALIDITY(c->pstream, maxlength > 0 && maxlength <= MAX_MEMBLOCKQ_LENGTH, tag, PA_ERR_INVALID);
|
|
||||||
-
|
|
||||||
+ CHECK_VALIDITY(c->pstream, maxlength >= pa_frame_size(&ss), tag, PA_ERR_INVALID);
|
|
||||||
+
|
|
||||||
if (sink_index != PA_INVALID_INDEX) {
|
|
||||||
sink = pa_idxset_get_by_index(c->protocol->core->sinks, sink_index);
|
|
||||||
CHECK_VALIDITY(c->pstream, sink, tag, PA_ERR_NOENTITY);
|
|
||||||
diff -urNad pulseaudio-0.9.5-7ubuntu1~/src/pulsecore/pstream.c pulseaudio-0.9.5-7ubuntu1/src/pulsecore/pstream.c
|
|
||||||
--- pulseaudio-0.9.5-7ubuntu1~/src/pulsecore/pstream.c 2007-05-08 06:39:33.000000000 -0400
|
|
||||||
+++ pulseaudio-0.9.5-7ubuntu1/src/pulsecore/pstream.c 2007-05-25 01:18:45.000000000 -0400
|
|
||||||
@@ -585,7 +585,7 @@
|
|
||||||
|
|
||||||
flags = ntohl(p->read.descriptor[PA_PSTREAM_DESCRIPTOR_FLAGS]);
|
|
||||||
|
|
||||||
- if (!p->import && (flags & PA_FLAG_SHMMASK) != 0) {
|
|
||||||
+ if (!p->use_shm && (flags & PA_FLAG_SHMMASK) != 0) {
|
|
||||||
pa_log_warn("Recieved SHM frame on a socket where SHM is disabled.");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
@@ -615,7 +615,7 @@
|
|
||||||
|
|
||||||
length = ntohl(p->read.descriptor[PA_PSTREAM_DESCRIPTOR_LENGTH]);
|
|
||||||
|
|
||||||
- if (length > FRAME_SIZE_MAX_ALLOW) {
|
|
||||||
+ if (length > FRAME_SIZE_MAX_ALLOW || length <= 0) {
|
|
||||||
pa_log_warn("Recieved invalid frame size : %lu", (unsigned long) length);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
diff -urNad pulseaudio-0.9.5-7ubuntu1~/src/pulsecore/sample-util.c pulseaudio-0.9.5-7ubuntu1/src/pulsecore/sample-util.c
|
|
||||||
--- pulseaudio-0.9.5-7ubuntu1~/src/pulsecore/sample-util.c 2007-05-25 01:15:11.000000000 -0400
|
|
||||||
+++ pulseaudio-0.9.5-7ubuntu1/src/pulsecore/sample-util.c 2007-05-25 01:20:30.000000000 -0400
|
|
||||||
@@ -35,13 +35,25 @@
|
|
||||||
#include "sample-util.h"
|
|
||||||
#include "endianmacros.h"
|
|
||||||
|
|
||||||
+#define PA_SILENCE_MAX (1024*1024*1)
|
|
||||||
+
|
|
||||||
pa_memblock *pa_silence_memblock_new(pa_mempool *pool, const pa_sample_spec *spec, size_t length) {
|
|
||||||
+ size_t fs;
|
|
||||||
assert(pool);
|
|
||||||
assert(spec);
|
|
||||||
|
|
||||||
if (length == 0)
|
|
||||||
length = pa_bytes_per_second(spec)/20; /* 50 ms */
|
|
||||||
|
|
||||||
+ if (length > PA_SILENCE_MAX)
|
|
||||||
+ length = PA_SILENCE_MAX;
|
|
||||||
+
|
|
||||||
+ fs = pa_frame_size(spec);
|
|
||||||
+ length = ((PA_SILENCE_MAX+fs-1) / fs) * fs;
|
|
||||||
+
|
|
||||||
+ if (length <= 0)
|
|
||||||
+ length = fs;
|
|
||||||
+
|
|
||||||
return pa_silence_memblock(pa_memblock_new(pool, length), spec);
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
work around bug in firefox which apparently misuses access() as NULL
|
|
||||||
pointer test.
|
|
||||||
|
|
||||||
diff -urNad pulseaudio~/src/utils/padsp.c pulseaudio/src/utils/padsp.c
|
|
||||||
--- pulseaudio~/src/utils/padsp.c 2006-08-18 23:29:26.000000000 +0200
|
|
||||||
+++ pulseaudio/src/utils/padsp.c 2006-10-19 00:13:47.082198231 +0200
|
|
||||||
@@ -2121,6 +2121,13 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
int access(const char *pathname, int mode) {
|
|
||||||
+
|
|
||||||
+ if (!pathname) {
|
|
||||||
+ /* Firefox needs this. See #27 */
|
|
||||||
+ errno = EFAULT;
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
debug(DEBUG_LEVEL_VERBOSE, __FILE__": access(%s)\n", pathname);
|
|
||||||
|
|
||||||
if (strcmp(pathname, "/dev/dsp") != 0 &&
|
|
@ -1,14 +0,0 @@
|
|||||||
Index: src/modules/module-alsa-sink.c
|
|
||||||
===================================================================
|
|
||||||
--- src/modules/module-alsa-sink.c (revision 1430)
|
|
||||||
+++ src/modules/module-alsa-sink.c (revision 1432)
|
|
||||||
@@ -415,6 +419,9 @@
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* ALSA might tweak the sample spec, so recalculate the frame size */
|
|
||||||
+ frame_size = pa_frame_size(&ss);
|
|
||||||
+
|
|
||||||
if (ss.channels != map.channels)
|
|
||||||
/* Seems ALSA didn't like the channel number, so let's fix the channel map */
|
|
||||||
pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_ALSA);
|
|
@ -1,115 +0,0 @@
|
|||||||
implement a few more ioctl()s, including a subset of
|
|
||||||
SNDCTL_DSP_GETOPTR. Just enough to make JavaSound work.
|
|
||||||
|
|
||||||
@DPATCH@
|
|
||||||
diff -urNad pulseaudio~/src/utils/padsp.c pulseaudio/src/utils/padsp.c
|
|
||||||
--- pulseaudio~/src/utils/padsp.c 2006-10-19 00:16:53.841869981 +0200
|
|
||||||
+++ pulseaudio/src/utils/padsp.c 2006-10-19 00:17:03.458470981 +0200
|
|
||||||
@@ -88,6 +88,8 @@
|
|
||||||
pa_cvolume sink_volume, source_volume;
|
|
||||||
uint32_t sink_index, source_index;
|
|
||||||
int volume_modify_count;
|
|
||||||
+
|
|
||||||
+ int optr_n_blocks;
|
|
||||||
|
|
||||||
PA_LLIST_FIELDS(fd_info);
|
|
||||||
};
|
|
||||||
@@ -574,6 +576,7 @@
|
|
||||||
i->volume_modify_count = 0;
|
|
||||||
i->sink_index = (uint32_t) -1;
|
|
||||||
i->source_index = (uint32_t) -1;
|
|
||||||
+ i->optr_n_blocks = 0;
|
|
||||||
PA_LLIST_INIT(fd_info, i);
|
|
||||||
|
|
||||||
reset_params(i);
|
|
||||||
@@ -1947,6 +1950,8 @@
|
|
||||||
free_streams(i);
|
|
||||||
dsp_flush_socket(i);
|
|
||||||
reset_params(i);
|
|
||||||
+
|
|
||||||
+ i->optr_n_blocks = 0;
|
|
||||||
|
|
||||||
pa_threaded_mainloop_unlock(i->mainloop);
|
|
||||||
break;
|
|
||||||
@@ -2035,14 +2040,76 @@
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ case SOUND_PCM_READ_RATE:
|
|
||||||
+ debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_RATE\n");
|
|
||||||
+
|
|
||||||
+ pa_threaded_mainloop_lock(i->mainloop);
|
|
||||||
+ *(int*) argp = i->sample_spec.rate;
|
|
||||||
+ pa_threaded_mainloop_unlock(i->mainloop);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case SOUND_PCM_READ_CHANNELS:
|
|
||||||
+ debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_CHANNELS\n");
|
|
||||||
+
|
|
||||||
+ pa_threaded_mainloop_lock(i->mainloop);
|
|
||||||
+ *(int*) argp = i->sample_spec.channels;
|
|
||||||
+ pa_threaded_mainloop_unlock(i->mainloop);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case SOUND_PCM_READ_BITS:
|
|
||||||
+ debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_BITS\n");
|
|
||||||
+
|
|
||||||
+ pa_threaded_mainloop_lock(i->mainloop);
|
|
||||||
+ *(int*) argp = pa_sample_size(&i->sample_spec)*8;
|
|
||||||
+ pa_threaded_mainloop_unlock(i->mainloop);
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case SNDCTL_DSP_GETOPTR: {
|
|
||||||
+ count_info *info;
|
|
||||||
+
|
|
||||||
+ debug(DEBUG_LEVEL_NORMAL, __FILE__": SNDCTL_DSP_GETODELAY\n");
|
|
||||||
+
|
|
||||||
+ info = (count_info*) argp;
|
|
||||||
+ memset(info, 0, sizeof(*info));
|
|
||||||
+
|
|
||||||
+ pa_threaded_mainloop_lock(i->mainloop);
|
|
||||||
+
|
|
||||||
+ for (;;) {
|
|
||||||
+ pa_usec_t usec;
|
|
||||||
+
|
|
||||||
+ PLAYBACK_STREAM_CHECK_DEAD_GOTO(i, exit_loop);
|
|
||||||
+
|
|
||||||
+ if (pa_stream_get_time(i->play_stream, &usec) >= 0) {
|
|
||||||
+ size_t k = pa_usec_to_bytes(usec, &i->sample_spec);
|
|
||||||
+ int m;
|
|
||||||
+
|
|
||||||
+ info->bytes = (int) k;
|
|
||||||
+ m = k / i->fragment_size;
|
|
||||||
+ info->blocks = m - i->optr_n_blocks;
|
|
||||||
+ i->optr_n_blocks = m;
|
|
||||||
+
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (pa_context_errno(i->context) != PA_ERR_NODATA) {
|
|
||||||
+ debug(DEBUG_LEVEL_NORMAL, __FILE__": pa_stream_get_latency(): %s\n", pa_strerror(pa_context_errno(i->context)));
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ pa_threaded_mainloop_wait(i->mainloop);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ pa_threaded_mainloop_unlock(i->mainloop);
|
|
||||||
+
|
|
||||||
+ debug(DEBUG_LEVEL_NORMAL, __FILE__": GETOPTR bytes=%i, blocks=%i, ptr=%i\n", info->bytes, info->blocks, info->ptr);
|
|
||||||
+
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
case SNDCTL_DSP_GETIPTR:
|
|
||||||
debug(DEBUG_LEVEL_NORMAL, __FILE__": invalid ioctl SNDCTL_DSP_GETIPTR\n");
|
|
||||||
goto inval;
|
|
||||||
-
|
|
||||||
- case SNDCTL_DSP_GETOPTR:
|
|
||||||
- debug(DEBUG_LEVEL_NORMAL, __FILE__": invalid ioctl SNDCTL_DSP_GETOPTR\n");
|
|
||||||
- goto inval;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
default:
|
|
||||||
debug(DEBUG_LEVEL_NORMAL, __FILE__": unknown ioctl 0x%08lx\n", request);
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
|||||||
Index: src/modules/module-alsa-sink.c
|
|
||||||
===================================================================
|
|
||||||
--- src/modules/module-alsa-sink.c (revision 1431)
|
|
||||||
+++ src/modules/module-alsa-sink.c (working copy)
|
|
||||||
@@ -141,6 +141,33 @@
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int suspend_recovery(struct userdata *u) {
|
|
||||||
+ int ret;
|
|
||||||
+ assert(u);
|
|
||||||
+
|
|
||||||
+ pa_log_info("*** ALSA-SUSPEND (playback) ***");
|
|
||||||
+
|
|
||||||
+ if ((ret = snd_pcm_resume(u->pcm_handle)) < 0) {
|
|
||||||
+ if (ret == -EAGAIN)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ if (ret != -ENOSYS)
|
|
||||||
+ pa_log("snd_pcm_resume() failed: %s", snd_strerror(-ret));
|
|
||||||
+ else {
|
|
||||||
+ if ((ret = snd_pcm_prepare(u->pcm_handle)) < 0)
|
|
||||||
+ pa_log("snd_pcm_prepare() failed: %s", snd_strerror(-ret));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ clear_up(u);
|
|
||||||
+ pa_module_unload_request(u->module);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void do_write(struct userdata *u) {
|
|
||||||
assert(u);
|
|
||||||
|
|
||||||
@@ -176,6 +203,13 @@
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (frames == -ESTRPIPE) {
|
|
||||||
+ if (suspend_recovery(u) < 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
pa_log("snd_pcm_writei() failed: %s", snd_strerror(-frames));
|
|
||||||
|
|
||||||
clear_up(u);
|
|
||||||
@@ -207,6 +241,10 @@
|
|
||||||
if (xrun_recovery(u) < 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ if (snd_pcm_state(u->pcm_handle) == SND_PCM_STATE_SUSPENDED)
|
|
||||||
+ if (suspend_recovery(u) < 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
do_write(u);
|
|
||||||
}
|
|
||||||
|
|
||||||
Index: src/modules/module-alsa-source.c
|
|
||||||
===================================================================
|
|
||||||
--- src/modules/module-alsa-source.c (revision 1429)
|
|
||||||
+++ src/modules/module-alsa-source.c (working copy)
|
|
||||||
@@ -143,6 +143,34 @@
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+
|
|
||||||
+static int suspend_recovery(struct userdata *u) {
|
|
||||||
+ int ret;
|
|
||||||
+ assert(u);
|
|
||||||
+
|
|
||||||
+ pa_log_info("*** ALSA-SUSPEND (capture) ***");
|
|
||||||
+
|
|
||||||
+ if ((ret = snd_pcm_resume(u->pcm_handle)) < 0) {
|
|
||||||
+ if (ret == -EAGAIN)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ if (ret != -ENOSYS)
|
|
||||||
+ pa_log("snd_pcm_resume() failed: %s", snd_strerror(-ret));
|
|
||||||
+ else {
|
|
||||||
+ if ((ret = snd_pcm_prepare(u->pcm_handle)) < 0)
|
|
||||||
+ pa_log("snd_pcm_prepare() failed: %s", snd_strerror(-ret));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ret < 0) {
|
|
||||||
+ clear_up(u);
|
|
||||||
+ pa_module_unload_request(u->module);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void do_read(struct userdata *u) {
|
|
||||||
assert(u);
|
|
||||||
|
|
||||||
@@ -175,6 +203,13 @@
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (frames == -ESTRPIPE) {
|
|
||||||
+ if (suspend_recovery(u) < 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
pa_log("snd_pcm_readi() failed: %s", snd_strerror(-frames));
|
|
||||||
|
|
||||||
clear_up(u);
|
|
||||||
@@ -210,6 +245,10 @@
|
|
||||||
if (xrun_recovery(u) < 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ if (snd_pcm_state(u->pcm_handle) == SND_PCM_STATE_SUSPENDED)
|
|
||||||
+ if (suspend_recovery(u) < 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
do_read(u);
|
|
||||||
}
|
|
||||||
|
|
11
pulseaudio-0.9.5-use-master.patch
Normal file
11
pulseaudio-0.9.5-use-master.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- src/modules/module-alsa-sink.c.orig 2007-04-21 10:21:26.000000000 +0100
|
||||||
|
+++ src/modules/module-alsa-sink.c 2007-04-21 10:21:50.000000000 +0100
|
||||||
|
@@ -422,7 +422,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pa_alsa_prepare_mixer(u->mixer_handle, dev) < 0) ||
|
||||||
|
- !(u->mixer_elem = pa_alsa_find_elem(u->mixer_handle, "PCM", "Master"))) {
|
||||||
|
+ !(u->mixer_elem = pa_alsa_find_elem(u->mixer_handle, "Master", "PCM"))) {
|
||||||
|
snd_mixer_close(u->mixer_handle);
|
||||||
|
u->mixer_handle = NULL;
|
||||||
|
}
|
@ -1,30 +0,0 @@
|
|||||||
Index: /trunk/src/pulsecore/core-util.c
|
|
||||||
===================================================================
|
|
||||||
--- /trunk/src/pulsecore/core-util.c (revision 1418)
|
|
||||||
+++ /trunk/src/pulsecore/core-util.c (revision 1423)
|
|
||||||
@@ -185,5 +185,5 @@
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
- pa_log_warn("secure directory creation not supported on Win32.");
|
|
||||||
+ pa_log_warn("secure directory creation not supported on Win32.");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -954,5 +954,6 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- if ((f = fopen(fn, mode)) || errno != ENOENT) {
|
|
||||||
+ f = fopen(fn, mode);
|
|
||||||
+ if (f != NULL) {
|
|
||||||
if (result)
|
|
||||||
*result = pa_xstrdup(fn);
|
|
||||||
@@ -961,4 +962,9 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (errno != ENOENT) {
|
|
||||||
+ pa_log_warn("WARNING: failed to open configuration file '%s': %s",
|
|
||||||
+ lfn, pa_cstrerror(errno));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
pa_xfree(lfn);
|
|
||||||
}
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
|||||||
Fix float32le <-> float32ne <-> float32be sample converters
|
|
||||||
|
|
||||||
diff -urNad pulseaudio~/src/pulsecore/sample-util.c pulseaudio/src/pulsecore/sample-util.c
|
|
||||||
--- pulseaudio~/src/pulsecore/sample-util.c 2006-08-18 23:38:49.000000000 +0200
|
|
||||||
+++ pulseaudio/src/pulsecore/sample-util.c 2006-10-19 00:19:56.233268731 +0200
|
|
||||||
@@ -68,6 +68,7 @@
|
|
||||||
case PA_SAMPLE_S16LE:
|
|
||||||
case PA_SAMPLE_S16BE:
|
|
||||||
case PA_SAMPLE_FLOAT32:
|
|
||||||
+ case PA_SAMPLE_FLOAT32RE:
|
|
||||||
c = 0;
|
|
||||||
break;
|
|
||||||
case PA_SAMPLE_ALAW:
|
|
||||||
diff -urNad pulseaudio~/src/pulsecore/sconv.c pulseaudio/src/pulsecore/sconv.c
|
|
||||||
--- pulseaudio~/src/pulsecore/sconv.c 2006-08-18 23:29:25.000000000 +0200
|
|
||||||
+++ pulseaudio/src/pulsecore/sconv.c 2006-10-19 00:19:56.229268481 +0200
|
|
||||||
@@ -72,6 +72,22 @@
|
|
||||||
oil_memcpy(b, a, sizeof(float) * n);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void float32re_to_float32ne(unsigned n, const void *a, float *b) {
|
|
||||||
+ assert(a);
|
|
||||||
+ assert(b);
|
|
||||||
+
|
|
||||||
+ while (n-- > 0)
|
|
||||||
+ ((uint32_t *)b)[n] = UINT32_SWAP (((uint32_t *)a)[n]);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void float32re_from_float32ne(unsigned n, const float *a, void *b) {
|
|
||||||
+ assert(a);
|
|
||||||
+ assert(b);
|
|
||||||
+
|
|
||||||
+ while (n-- > 0)
|
|
||||||
+ ((uint32_t *)b)[n] = UINT32_SWAP (((uint32_t *)a)[n]);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void ulaw_to_float32ne(unsigned n, const void *a, float *b) {
|
|
||||||
const uint8_t *ca = a;
|
|
||||||
|
|
||||||
@@ -140,6 +156,8 @@
|
|
||||||
return pa_sconv_s16be_to_float32ne;
|
|
||||||
case PA_SAMPLE_FLOAT32NE:
|
|
||||||
return float32ne_to_float32ne;
|
|
||||||
+ case PA_SAMPLE_FLOAT32RE:
|
|
||||||
+ return float32re_to_float32ne;
|
|
||||||
case PA_SAMPLE_ALAW:
|
|
||||||
return alaw_to_float32ne;
|
|
||||||
case PA_SAMPLE_ULAW:
|
|
||||||
@@ -159,6 +177,8 @@
|
|
||||||
return pa_sconv_s16be_from_float32ne;
|
|
||||||
case PA_SAMPLE_FLOAT32NE:
|
|
||||||
return float32ne_from_float32ne;
|
|
||||||
+ case PA_SAMPLE_FLOAT32RE:
|
|
||||||
+ return float32re_from_float32ne;
|
|
||||||
case PA_SAMPLE_ALAW:
|
|
||||||
return alaw_from_float32ne;
|
|
||||||
case PA_SAMPLE_ULAW:
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:29a70824e0771e514a3d97c8cfb486cd6d5d4178308fef8460f1becf75c83eb4
|
|
||||||
size 805606
|
|
10
pulseaudio-0.9.6-gcc-fix.diff
Normal file
10
pulseaudio-0.9.6-gcc-fix.diff
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
--- src/pulsecore/core-util.c-dist 2007-06-08 14:45:27.000000000 +0200
|
||||||
|
+++ src/pulsecore/core-util.c 2007-06-08 14:45:45.000000000 +0200
|
||||||
|
@@ -544,6 +544,7 @@ fail:
|
||||||
|
cap_free(caps);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+ ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset the priority to normal, inverting the changes made by pa_raise_priority() */
|
3
pulseaudio-0.9.6.tar.bz2
Normal file
3
pulseaudio-0.9.6.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:22d8619334f246ecd0c22912c050262656238f0acfd94dbdcafdf7e7771712fa
|
||||||
|
size 829073
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jun 8 15:08:39 CEST 2007 - tiwai@suse.de
|
||||||
|
|
||||||
|
- updated to version 0.9.6:
|
||||||
|
* bugfixes, including previous patches
|
||||||
|
* use lock-free algorith with libatomic-ops
|
||||||
|
- add avahi-devel, xorg-x11-devel, glib2-devel and hal-devel to
|
||||||
|
buildrequires
|
||||||
|
- prefer Master volume to PCM volume
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 29 19:22:56 CEST 2007 - tiwai@suse.de
|
Tue May 29 19:22:56 CEST 2007 - tiwai@suse.de
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package pulseaudio (Version 0.9.5)
|
# spec file for package pulseaudio (Version 0.9.6)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
# This file and all modifications and additions to the pristine
|
# This file and all modifications and additions to the pristine
|
||||||
@ -11,22 +11,17 @@
|
|||||||
# norootforbuild
|
# norootforbuild
|
||||||
|
|
||||||
Name: pulseaudio
|
Name: pulseaudio
|
||||||
BuildRequires: alsa-devel doxygen jack-devel liboil-devel libsamplerate-devel libsndfile-devel
|
BuildRequires: alsa-devel avahi-devel doxygen glib2-devel hal-devel jack-devel libatomic-ops-devel liboil-devel libsamplerate-devel libsndfile-devel xorg-x11-devel
|
||||||
Summary: A Networked Sound Server
|
Summary: A Networked Sound Server
|
||||||
Version: 0.9.5
|
Version: 0.9.6
|
||||||
Release: 53
|
Release: 1
|
||||||
License: GNU General Public License (GPL), GNU Library General Public License v. 2.0 and 2.1 (LGPL)
|
License: GNU General Public License (GPL), GNU Library General Public License v. 2.0 and 2.1 (LGPL)
|
||||||
Group: System/Sound Daemons
|
Group: System/Sound Daemons
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Source1: default.pa
|
Source1: default.pa
|
||||||
Patch: pulseaudio-0.9.5-framesize.patch
|
Patch: pulseaudio-0.9.5-esd-max-samplesize.diff
|
||||||
Patch1: pulseaudio-0.9.5-suspend.patch
|
Patch1: pulseaudio-0.9.5-use-master.patch
|
||||||
Patch2: pulseaudio-0.9.5-userconf.patch
|
Patch2: pulseaudio-0.9.6-gcc-fix.diff
|
||||||
Patch3: pulseaudio-0.9.5-dos-vulns-fix.diff
|
|
||||||
Patch4: pulseaudio-0.9.5-wrong-endian-convert.diff
|
|
||||||
Patch5: pulseaudio-0.9.5-firefox-workaround.diff
|
|
||||||
Patch6: pulseaudio-0.9.5-javasound-support.diff
|
|
||||||
Patch7: pulseaudio-0.9.5-esd-max-samplesize.diff
|
|
||||||
URL: http://pulseaudio.org
|
URL: http://pulseaudio.org
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
@ -75,14 +70,9 @@ Authors:
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch
|
%patch -p1
|
||||||
%patch1
|
%patch1
|
||||||
%patch2 -p2
|
%patch2
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
cp /usr/share/gettext/config.rpath .
|
cp /usr/share/gettext/config.rpath .
|
||||||
%{?suse_update_config:%{suse_update_config -f}}
|
%{?suse_update_config:%{suse_update_config -f}}
|
||||||
autoreconf --force --install
|
autoreconf --force --install
|
||||||
@ -127,11 +117,20 @@ test "$RPM_BUILD_ROOT" != "/" -a -d "$RPM_BUILD_ROOT" && rm -rf $RPM_BUILD_ROOT
|
|||||||
%doc doxygen/html
|
%doc doxygen/html
|
||||||
%{_libdir}/libpulse.so
|
%{_libdir}/libpulse.so
|
||||||
%{_libdir}/libpulsecore.so
|
%{_libdir}/libpulsecore.so
|
||||||
|
%{_libdir}/libpulse-browse.so
|
||||||
|
%{_libdir}/libpulse-mainloop-glib.so
|
||||||
%{_libdir}/libpulse-simple.so
|
%{_libdir}/libpulse-simple.so
|
||||||
%{_libdir}/pkgconfig/*.pc
|
%{_libdir}/pkgconfig/*.pc
|
||||||
%{_includedir}/pulse*
|
%{_includedir}/pulse*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jun 08 2007 - tiwai@suse.de
|
||||||
|
- updated to version 0.9.6:
|
||||||
|
* bugfixes, including previous patches
|
||||||
|
* use lock-free algorith with libatomic-ops
|
||||||
|
- add avahi-devel, xorg-x11-devel, glib2-devel and hal-devel to
|
||||||
|
buildrequires
|
||||||
|
- prefer Master volume to PCM volume
|
||||||
* Tue May 29 2007 - tiwai@suse.de
|
* Tue May 29 2007 - tiwai@suse.de
|
||||||
- fix possible remote DoS (#260326)
|
- fix possible remote DoS (#260326)
|
||||||
- fix wrong endian conversion of float data
|
- fix wrong endian conversion of float data
|
||||||
|
Loading…
x
Reference in New Issue
Block a user