Yet more info, the output of snd_pcm_hw_params_dump and snd_pcm_sw_params_dump 
(they look the same for both capture and playback):

ACCESS:  RW_INTERLEAVED
FORMAT:  FLOAT_LE
SUBFORMAT:  STD
SAMPLE_BITS: 32
FRAME_BITS: 64
CHANNELS: 2
RATE: 48000
PERIOD_TIME: (666 667)
PERIOD_SIZE: 32
PERIOD_BYTES: 256
PERIODS: 2
BUFFER_TIME: (1333 1334)
BUFFER_SIZE: 64
BUFFER_BYTES: 512
TICK_TIME: 0
tstamp_mode: NONE
tstamp_type: MONOTONIC
period_step: 1
avail_min: 32
start_threshold: 32
stop_threshold: 1073741824
silence_threshold: 0
silence_size: 1073741824
boundary: 1073741824

> -----Original Message-----
> From: Robert Bielik
> Sent: den 15 januari 2018 17:47
> To: Robert Bielik <robert.bie...@dirac.com>; alsa-user@lists.sourceforge.net
> Subject: RE: Strange i/o problem
> 
> Ah, forgot to mention a couple of things, this is on a Raspberry Pi 3 with
> Raspbian Stretch, the rendering thread is set to SCHED_RR with max priority,
> the timing of the callback is typically (in microseconds):
> 
> min, mean, max, stddev: 655, 666, 680, 1.45639
> min, mean, max, stddev: 656, 666, 680, 1.25471
> min, mean, max, stddev: 640, 666, 694, 1.83335
> min, mean, max, stddev: 619, 666, 713, 2.10409
> min, mean, max, stddev: 656, 666, 681, 1.32999
> min, mean, max, stddev: 652, 666, 682, 1.65541
> min, mean, max, stddev: 651, 666, 685, 1.49302
> min, mean, max, stddev: 656, 666, 680, 1.33093
> min, mean, max, stddev: 649, 666, 690, 1.6246
> min, mean, max, stddev: 656, 666, 679, 1.3234
> min, mean, max, stddev: 656, 666, 680, 1.36177
> min, mean, max, stddev: 611, 666, 704, 1.9551
> min, mean, max, stddev: 651, 666, 687, 1.37784
> min, mean, max, stddev: 650, 666, 689, 1.4738
> min, mean, max, stddev: 609, 666, 722, 2.2253
> min, mean, max, stddev: 656, 666, 680, 1.57805
> min, mean, max, stddev: 643, 666, 683, 1.54424
> 
> (which to me looks more than OK)
> 
> > -----Original Message-----
> > From: Robert Bielik [mailto:robert.bie...@dirac.com]
> > Sent: den 15 januari 2018 17:41
> > To: alsa-user@lists.sourceforge.net
> > Subject: [Alsa-user] Strange i/o problem
> >
> > I have a strange problem: I'm trying to pipe audio input -> output using a
> I2S
> > device @48000 Hz and 32 frames buffer size and 2 periods, to get as low a
> > latency as possible.
> >
> > It works nicely if I either:
> > 1. Use capture + playback and record capture to a wav file (sounds fine).
> > 2. Use playback only and generate sine waves.
> > 3. Pipe capture -> playback with a larger buffer size, such as 64.
> >
> > But if I have capture + playback, I get a very strange output noise akin
> > towards heavy intermodulation distortion.
> >
> > The rendering thread is (pseudo code):
> >
> > while (true) {
> >     if(capture_active) {
> >        snd_pcm_wait(capture_handle, timeout);
> >        read_pcm_data_into_buffer(capture_handle, input_buffer);
> >     }
> >     do_callback(input_buffer, output_buffer);
> >     if (playback_active) {
> >         snd_pcm_wait(playback_handle, timeout);
> >         write_pcm_data_from_buffer(playback_handle, output_buffer);
> >     }
> > }
> >
> > Any ideas what can go wrong ?
> > /R
> >
> >
> > ------------------------------------------------------------------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Alsa-user mailing list
> > Alsa-user@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/alsa-user

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to