I wasn't able to find anything in the list archives, please forgive me if this question has been asked before... Our app needs to support multiple media types, so GStreamer would seem to be the obvious choice. However, voice quality is paramount for us. Are there any disadvantages to using the Speex plugin for GStreamer as opposed to directly coding to the Speex API? In particular, does the GStreamer element fully support the echo- cancellation and jitter-buffer features of Speex? Are there any other pitfalls that a naive developer (and new to both APIs) should be aware of? Many thanks, Josh
Joshua Gargus wrote:> Our app needs to support multiple media types, so GStreamer would seem > to be the obvious choice. However, voice quality is paramount for > us. Are there any disadvantages to using the Speex plugin for > GStreamer as opposed to directly coding to the Speex API?Don't know gstreamer well, but I assume that not all encoding options are supported in gstreamer. If you only want the standard options (which is what I recommend unless you *know* you want something else), it should be the same. The decoder will likely work the same.> In > particular, does the GStreamer element fully support the echo- > cancellation and jitter-buffer features of Speex?I highly doubt it.> Are there any other > pitfalls that a naive developer (and new to both APIs) should be aware > of?I assume your application is VoIP or something vaguely similar. In that case, the hardest thing to get right is doing the soundcard capture and playback without having a huge buffer, not getting xruns (skips). Jean-Marc
On May 5, 2008, at 6:58 PM, Jean-Marc Valin wrote:> Joshua Gargus wrote: >> Our app needs to support multiple media types, so GStreamer would >> seem >> to be the obvious choice. However, voice quality is paramount for >> us. Are there any disadvantages to using the Speex plugin for >> GStreamer as opposed to directly coding to the Speex API? > > Don't know gstreamer well, but I assume that not all encoding options > are supported in gstreamer. If you only want the standard options > (which > is what I recommend unless you *know* you want something else), it > should be the same. The decoder will likely work the same.I think that the standard options should be fine.> > >> In >> particular, does the GStreamer element fully support the echo- >> cancellation and jitter-buffer features of Speex? > > I highly doubt it.You're right (as confirmed by grepping the Speex-GStreamer sources). Darn.> > >> Are there any other >> pitfalls that a naive developer (and new to both APIs) should be >> aware >> of? > > I assume your application is VoIP or something vaguely similar.It's a virtual environment with VoIP built in. GStreamer is attractive because we eventually want to have lip-synced video.> In that > case, the hardest thing to get right is doing the soundcard capture > and > playback without having a huge buffer, not getting xruns (skips).Thanks, I'll make sure that I test for those. Josh> > > Jean-Marc