Lost microphone, some news

Eion Robb eion at robbmob.com
Tue Jun 26 19:33:45 EDT 2018


Hi Jocke,

The devel@ mailing list might be more appropriate to discuss code and
technical changes.  You might also want to get in touch with the sipe
plugin developers on their forum, as I don't believe the monitor the Pidgin
mailing lists.

Cheers,
Eion

On Wed, 27 Jun 2018 at 03:39, Joakim Tjernlund <
Joakim.Tjernlund at infinera.com> wrote:

> I loose my microphone(USB headset) on and off. Fairly easy to trigger
> doing SIPE Test Calls
> I have debugged it with GST_DEBUG=3 to:
> 0:01:44.674183639  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.674222435  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:44.723644690  9191 0x7f7750005370 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.723684456  9191 0x7f7750005370 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:44.773257417  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.773299667  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:44.773345513  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.773362553  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:44.773552549  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.773577829  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:44.824544605  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.824593763  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:44.984509825  9191 0x7f7750005370 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:44.984555736  9191 0x7f7750005370 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:45.038746276  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:686:validate_buffer:<srtpdec_1> No SSRC found in buffer
> 0:01:45.038816916  9191 0x55f2eff3f0f0 WARN                 srtpdec
> gstsrtpdec.c:1254:gst_srtp_dec_chain:<srtpdec_1> Invalid buffer, dropping
> 0:01:45.214407207  9191 0x55f2f0c30400 FIXME               basesink
> gstbasesink.c:3144:gst_base_sink_default_event:<autoaudiosink2-actual-sink-pulse>
> stream-start event without group-id. Consider implementing group-id
> handling in the upstream elements
> 0:01:45.297601562  9191 0x7f7784025a40 WARN                   pulse
> pulsesink.c:702:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse>
> Got underflow
> 0:01:53.676467518  9191 0x7f7784025a40 WARN                   pulse
> pulsesink.c:702:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse>
> Got underflow
> 0:02:10.626495331  9191 0x7f7784025a40 WARN                   pulse
> pulsesink.c:702:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse>
> Got underflow
> 0:02:11.988072210  9191 0x7f7784025a40 WARN                   pulse
> pulsesink.c:702:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse>
> Got underflow
> 0:02:15.532355085  9191 0x7f7750004b70 WARN                   pulse
> pulsesrc.c:1141:gst_pulsesrc_read:<autoaudiosrc3-actual-src-puls> error:
> pa_pause2: OK
> 0:02:15.532500956  9191 0x7f7750004b70 WARN                   pulse
> pulsesrc.c:1204:gst_pulsesrc_read:<autoaudiosrc3-actual-src-puls> error:
> pa_unlock_and_fail: OK
> 0:02:15.532584089  9191 0x7f7750004b70 WARN                audiosrc
> gstaudiosrc.c:221:audioringbuffer_thread_func:<autoaudiosrc3-actual-src-puls>
> error reading data -1 (reason: Resource temporarily unavailable), skipping
> segment
>
> Here I loose my microphone and further(with some extra debug in gstreamer,
> pulsesrc.c:
> gst_pulsesrc_read()
> ....
> while (length > 0) {
>     size_t l;
>
>     GST_LOG_OBJECT (pulsesrc, "reading %u bytes", length);
>
>     /*check if we have a leftover buffer */
>     if (!pulsesrc->read_buffer) {
>       for (;;) {
>           if (gst_pulsesrc_is_dead (pulsesrc, TRUE)) {
>               GST_ELEMENT_ERROR (pulsesrc, RESOURCE, FAILED,
>                                  ("pa_dead: %s",
>                                   pa_strerror (pa_context_errno
> (pulsesrc->context))), (NULL));
>               goto unlock_and_fail;
>           }
>
>         /* read all available data, we keep a pointer to the data and the
> length
>          * and take from it what we need. */
>         if (pa_stream_peek (pulsesrc->stream, &pulsesrc->read_buffer,
>                 &pulsesrc->read_buffer_length) < 0)
>           goto peek_failed;
>
>         GST_LOG_OBJECT (pulsesrc, "have data of %" G_GSIZE_FORMAT " bytes",
>             pulsesrc->read_buffer_length);
>
>         /* if we have data, process if */
>         if (pulsesrc->read_buffer && pulsesrc->read_buffer_length)
>           break;
>
>         /* now wait for more data to become available */
>         GST_LOG_OBJECT (pulsesrc, "waiting for data");
>         pa_threaded_mainloop_wait (pulsesrc->mainloop);
>
>         if (pulsesrc->paused) {
>             GST_ELEMENT_ERROR (pulsesrc, RESOURCE, FAILED,
>                                ("pa_pause2: %s",
>                                 pa_strerror (pa_context_errno
> (pulsesrc->context))), (NULL));
>             goto was_paused;
>         }
>       }
>     }
>
> .....
> unlock_and_fail:
>   {
>     GST_ELEMENT_ERROR (pulsesrc, RESOURCE, FAILED,
>         ("pa_unlock_and_fail: %s",
>             pa_strerror (pa_context_errno (pulsesrc->context))), (NULL));
>     pulsesrc->in_read = FALSE;
>     pa_threaded_mainloop_unlock (pulsesrc->mainloop);
>
>     return (guint) - 1;
>   }
> }
>
> Here one can se that whenever pause happens, I loose audio.
> I don't know where to go next, this is audioringbuffer_thread_func()
> in gstaudiosrc.c:
> ....
> do {
>         read = readfunc (src, readptr, left, &timestamp);
>         GST_LOG_OBJECT (src, "transfered %d bytes of %d to segment %d",
> read,
>             left, readseg);
>         if (read < 0 || read > left) {
>           GST_WARNING_OBJECT (src,
>               "error reading data %d (reason: %s), skipping segment", read,
>               g_strerror (errno));
>           break;
>         }
>         left -= read;
>         readptr += read;
> } while (left > 0);
>
>       /* Update timestamp on buffer if required */
>       gst_audio_ring_buffer_set_timestamp (buf, readseg, timestamp);
>
>       /* we read one segment */
>       gst_audio_ring_buffer_advance (buf, 1);
> ....
> No idea if pause should be handle here or maybe somewhere in
> pidgin,pidgin-sipe ?
>
>  Jocke
> _______________________________________________
> Support at pidgin.im mailing list
> Want to unsubscribe?  Use this link:
> https://pidgin.im/cgi-bin/mailman/listinfo/support
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pidgin.im/pipermail/devel/attachments/20180627/ba0467f2/attachment.html>


More information about the Devel mailing list