audiomixer gaps

jim nualart jim at austinmodern.com
Wed Dec 16 18:04:16 UTC 2020


Nicolas and David, thanks for the input. Both sound like reasonable
explanations to me.

From: Nicolas Dufresne <nicolas at ndufresne.ca>
> 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.


From: David Ing <ding at panopto.com>
> In gstreamer, a queue is also a thread boundary.  By adding queues you are
> adding threads.  My theory:  In your scenario, the extra queue (with
> thread) may be allowing audio information to flow through your pipeline
> more freely.





> 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 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
> > > > >
> > > > > _______________________________________________
> > >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20201216/def97ad5/attachment.htm>


More information about the gstreamer-devel mailing list