audiomixer gaps

Nicolas Dufresne nicolas at ndufresne.ca
Mon Dec 14 15:34:59 UTC 2020


Le samedi 12 décembre 2020 à 13:21 -0600, jim nualart a écrit :
> A little more info on this...
> 
> 1. By "gaps", I mean silence or 0s. And this is not simply an artifact of
> using filesrc to write a wav. The gaps are also audible (or rather, not
> audible, since it's silence, but I think everyone knows what I mean :-)
> 
> 2. As I mentioned previously, I see the same behavior (gaps) if I replace
> audiotestsrc with alsasrc (pointing to a line-in where I am playing a sine
> wave from my phone).
> 
> 3. Enabling GST_DEBUG=audioaggregator:5 I see a Timeout msg, e.g., "Timeout,
> missing 36 frames (0:00:00.000816326)" that corresponds to all the gaps in the
> resulting wav file.
> 
> Based on that, I start to think that maybe I need to set a latency on the
> audiomixer (the default is 0). However, no value I use makes any difference.
> 
> Next, and I can't explain why, I put a queue immediately after the
> audiomixer (no latency or other non-default settings). This eliminates the
> Timeouts (and gaps of silence). This holds true when I switch back to an
> alsasrc instead of the audiotestsrc.

I have also hit situation were a queue was needed after audiomixer /
audiointerleave in order for the timeout mechanism to work properly. Basically,
push-back from downstream can delay the aggregator passed it's timeout, and you
may endup in that state forever.

This is a limitation of the timeout mechanism I believe, at least I don't see
other way around to make this timeout behave like intented.

> 
> I dumped the graphs -- the queue (it's the only queue in the very short
> pipeline) does not show as buffering any data. So I am really confused as to
> how this "fixed" the issue.
> 
> Does anyone have an explanation? I'd settle for even just a well-written
> theory :-)
> 
> thanks in advance,
> -jim
> 
> 
>  
> > Hi Matt,
> > I tried that as well. I get the same result .. gaps every 5 seconds.
> > 
> > If I remove is-live (with or without do-timestamp), then there are no gaps.
> > However, in this case, I also get a much larger, and longer, file; which I
> > don't understand.
> > 
> > And again, if I use an adder (vs audiomixer), I get no gaps (with is-live
> > and do-timestamp both true). And if I remove the adder, same ... no gaps.
> > 
> > I'm trying not to get hung up on audiotestsrc itself as it is simply a way
> > for me to demonstrate what I see with my pipeline using alsasrc and an
> > audiomixer.
> > 
> > I suppose I don't really understand what audiomixer is doing. Another
> > oddity (I think) is that if instead of running the sample pipeline for a
> > set time (using the timeout command), I instead use num-buffers=1000 (in
> > audiotestsrc), I get different resulting file sizes:
> > - with an adder, I get a file with 10.884s of audio and a size of 960056
> > bytes.
> > - with an audiomixer, I get a file with 10.920s of audio and a size
> > of 1926332 bytes.
> > 
> > Any chance someone is willing to run the same test and compare results?
> > export TESTSOURCE1="audiotestsrc wave=0 volume=0.8 is-live=true
> > do-timestamp=true samplesperbuffer=480"
> > export SINK="wavenc ! filesink location=test.wav"
> > timeout 60 gst-launch-1.0 $TESTSOURCE1 blocksize=960 ! audiomixer ! $SINK
> > 
> > The gaps go away if I use an adder, as does my actual problem in my "real"
> > pipeline, but I'd like to understand why.
> > 
> > thanks in advance,
> > -jim
> > 
> > 
> > > Date: Tue, 8 Dec 2020 19:05:25 +1100
> > > From: Matthew Waters <ystreet00 at gmail.com>
> > > 
> > > Don't use 'do-timestamp=true' with audiotestsrc.? It will not do the
> > > right thing.
> > > 
> > > Cheers
> > > -Matt
> > > 
> > > On 8/12/20 5:12 pm, jim nualart wrote:
> > > > Hi,
> > > > Hoping that someone can shed some light on this...
> > > > 
> > > > The following pipeline results in a file with gaps every 5 seconds:
> > > > export TESTSOURCE1="audiotestsrc wave=0 volume=0.8 is-live=true
> > > > do-timestamp=true samplesperbuffer=480"
> > > > export SINK="wavenc ! filesink location=test.wav"
> > > > timeout 60 gst-launch-1.0 $TESTSOURCE1 ! audiomixer ! $SINK
> > > > 
> > > > If you open the resulting wav file (e.g., in audacity), there are gaps
> > > > every 5 seconds.
> > > > 
> > > > If you remove the audiomixer?from the pipeline, there are no gaps. If
> > > > you use an adder (instead of the audiomixer), there are no gaps.
> > > > 
> > > > I've looked at logs (GST_DEBUG=audiomixer:6), and there are no obvious
> > > > errors/warnings/etc.
> > > > 
> > > > I realize that the audiotestsrc is not really a live-source and I'm
> > > > not sure how well it behaves as such. But I am actually
> > > > troubleshooting a similar issue using an alsasrc instead. I am hoping
> > > > that if I understand what's going on here, it will help on the other
> > > > issue. (For the issue with the alsasrc, I've gone so far as to write
> > > > the data to files; one at the src of the element feeding the
> > > > audiomixer, and one at the src of the audiomixer itself -- the first
> > > > shows no gaps, while the later does show gaps.)
> > > > 
> > > > Many thanks in advance to any advice.
> > > > -jim
> > > > 
> > > > _______________________________________________
> > 
> > 
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel




More information about the gstreamer-devel mailing list