Dne 8.2.2018 v 09:49 Wischer, Timo (ADITG/ESB) napsal(a):
Hello all,
any comments so far?
The patch looks good. Applied. Thanks.
Jaroslav
It would be great if someone could have a look because I have some further fixes pending.
Best regards
Timo Wischer
Advanced Driver Information Technology GmbH Engineering Software Base (ADITG/ESB) Robert-Bosch-Str. 200 31139 Hildesheim Germany
Tel. +49 5121 49 6938 Fax +49 5121 49 6999 twischer@de.adit-jv.com
ADIT is a joint venture company of Robert Bosch GmbH/Robert Bosch Car Multimedia GmbH and DENSO Corporation Sitz: Hildesheim, Registergericht: Amtsgericht Hildesheim HRB 3438 Geschäftsführung: Wilhelm Grabow, Ken Yaguchi
From: Wischer, Timo (ADITG/ESB) Sent: Monday, January 22, 2018 9:37 AM To: patch@alsa-project.org Cc: alsa-devel@alsa-project.org; Wischer, Timo (ADITG/ESB) Subject: [PATCH - JACK PCM plugin] jack: Write only valid values to the internal hw_ptr
From: Timo Wischer twischer@de.adit-jv.com
Otherwise the ALSA thread could for example read a hw_ptr > buffer_size
Signed-off-by: Timo Wischer twischer@de.adit-jv.com
diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c index 4468ede..3aed332 100644 --- a/jack/pcm_jack.c +++ b/jack/pcm_jack.c @@ -137,6 +137,7 @@ static int snd_pcm_jack_process_cb(jack_nframes_t nframes, snd_pcm_ioplug_t *io) { snd_pcm_jack_t *jack = io->private_data;
snd_pcm_uframes_t hw_ptr; const snd_pcm_channel_area_t *areas; snd_pcm_uframes_t xfer = 0; unsigned int channel;
@@ -155,12 +156,13 @@ snd_pcm_jack_process_cb(jack_nframes_t nframes, snd_pcm_ioplug_t *io) return 0; } }
hw_ptr = jack->hw_ptr; areas = snd_pcm_ioplug_mmap_areas(io); while (xfer < nframes) { snd_pcm_uframes_t frames = nframes - xfer;
snd_pcm_uframes_t offset = jack->hw_ptr;
snd_pcm_uframes_t offset = hw_ptr; snd_pcm_uframes_t cont = io->buffer_size - offset; if (cont < frames)
@@ -173,10 +175,11 @@ snd_pcm_jack_process_cb(jack_nframes_t nframes, snd_pcm_ioplug_t *io) snd_pcm_area_copy(&areas[channel], offset, &jack->areas[channel], xfer, frames, io->format); }
jack->hw_ptr += frames;
jack->hw_ptr %= io->buffer_size;
hw_ptr += frames;
hw_ptr %= io->buffer_size; xfer += frames; }
jack->hw_ptr = hw_ptr; pcm_poll_unblock_check(io); /* unblock socket for polling if needed */
-- 2.7.4
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel