Audio lags in aSPICE client while using gstreamer framework

Nicolas Dufresne nicolas at ndufresne.ca
Sat Jul 9 13:42:59 UTC 2016


Le vendredi 08 juillet 2016 à 09:25 +0530, Ritesh Prajapati a écrit :
> Hi Nicolas,
> 
>     Thanks for Reply.
> 
>     When I am getting too much audio discontinuity timestamps
> messages at that time Audio data is lagged compare to video data and
> goes out of sync for that duration. So, if I set threshold timestamp
> to 40ms then will my sync problem be solved or reduced?

40ms threshold is default on most audio sink. The sink will provide a
clock and compare the timestamp you provide with that clock. So it will
resync if the timestamp you provide and the number of sample miss-
match.

I probably don't have enough information to better help you right now.
But I think what is important is that your timestamps remains as
representative as possible to when the audio was produced. Did you find
anything in SPICE to help you with that ?

> 
>     Please let me know if any other configuration require in appsrc
> pipeline to solve this problem.
> On Thursday 07 July 2016 06:45 PM, Nicolas Dufresne wrote:
> > See reply inline.
> > 
> > Le jeudi 07 juillet 2016 à 14:12 +0530, Ritesh Prajapati a écrit :
> > > Hi All,
> > > 
> > >     I am working on one of our product in which android 4.4
> > > Kitkat is
> > > running. We have one application called it as SPICE client which
> > > runs
> > > on our product and is used to capture Audio+Video data streamed
> > > over
> > > network from SPICE server which is installed into Ubuntu 16.04
> > > Server.
> > > 
> > >     We are using SPICE client gtk based topology in which
> > > Gstreamer
> > > Framework 1.0 is used. 
> > > 
> > >      We are facing one audio sync issue like when Streaming
> > > process
> > > of Audio+Video are started from SPICE server side at that time we
> > > are
> > > getting video data perfectly but not getting audio data in sync
> > > compared to video frames and are dropped for some initial
> > > durations.
> > > so, it seems like Audio data is not synced or is lagged compare
> > > to
> > > video data at that time.
> > > 
> > >      Please find following code snippet of Gstreamer Pipeline we
> > > have
> > > configured and used in our SPICE client android code.
> > > 
> > > > #ifdef WITH_GST1AUDIO 
> > > >             g_strdup_printf("audio/x-
> > > > raw,format=\"S16LE\",channels=%d,rate=%d," 
> > > >                             "layout=interleaved", channels,
> > > > frequency); 
> > > >         #else 
> > > >             g_strdup_printf("audio/x-raw-
> > > > int,channels=%d,rate=%d,signed=(boolean)true," 
> > > >                            
> > > > "width=16,depth=16,endianness=1234",
> > > > channels, frequency); 
> > > >         #endif 
> > > >         gchar *pipeline = g_strdup
> > > > (g_getenv("SPICE_GST_AUDIOSINK")); 
> > > >         if (pipeline == NULL) 
> > > >             pipeline = g_strdup_printf("appsrc is-live=1 do-
> > > > timestamp=1 format=time min-latency=0 caps=\"%s\"
> > > > name=\"appsrc\" !
> > > > " 
> > > >                                        "audioconvert !
> > > > audioresample ! autoaudiosink name=\"audiosink\"", audio_caps);
> > >  
> > >     Also, we are getting below warning message sometimes from
> > > Android
> > > Gstreamer Studio.
> > >         
> > >        
> > > gstaudiobasesink.c:1807:gst_audio_base_sink_get_alignment:<audios
> > > ink-
> > > actual-sink-opensles> Unexpected discontinuity in audio
> > > timestamps of
> > > -0:00:00.076145124, resyncing
> > As audio may arrive in small burst, what will happen is that the
> > timestamp distance between buffer becomes too small. The timestamp
> > +
> > duration of the current buffer may endup after the next timestamp.
> > In
> > this case the audio sink will resync. To prevent that, you should
> > timestamp the buffer yourself, so you pick an initial timestamp,
> > and
> > add the duration. You then monitor the calculated timestamp and the
> > time now, if it drift over a certain threshold (generally 40ms),
> > you
> > resync (and set the discontinuity flag).
> > 
> > In an ideal world, the streaming protocol should provide you with
> > timing information that let you correlate in time the video and the
> > audio frames. This should serve in creating timestamps and ensuring
> > perfect A/V sync. I don't know Spice too much, but it might not be
> > part
> > of the protocol.
> > 
> > Nicolas
> > 
> > 
> > _______________________________________________
> > 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