IMX6 alsasrc to alsasink: Capture audio input, apply delay, drive headphone output

I am trying to capture audio through Line IN, apply a 10 millisecond delay, then playback through Headphones out. I haven’t implemented the delay yet - just trying to get audio capture and playback working.

I can capture Line IN audio:

gst-launch-1.0 alsasrc ! imxmp3audioenc ! filesink location=test.mp3

And playback the mp3:

gst-launch-1.0 filesrc location=test.mp3 typefind=true ! decodebin ! alsasink device=hw:0,0

But I can’t capture from alsasrc and send it to alsasink:

gst-launch-1.0 alsasrc ! alsasink device=hw:0,0

I even tried turning it into MP3 first. I get some choppy audio, then it cuts out:

gst-launch-1.0 alsasrc ! imxmp3audioenc ! decodebin ! alsasink device=hw:0,0

Is there something I need to put between the alsasrc and alsasink to play the Line IN out the Headphone? After I get this working, I’ll apply a configurable delay to the audio using a gstreamer plugin, so it’s not as simple as splitting the headphone jack coming into the Colibri Evaluation Board.


This might be related to this gstreamer bug:

The following pipeline works for me:
gst-launch-1.0 alsasrc ! alsasink sync=false

Note that I do think that there is considerable latency between input and output. I expect a latency much bigger than 100ms even with the ‘alsasrc ! alsasink’ pipeline.