Just an info point: This happens often to me in Window susing MS Skype for 
Business (also with USB headset: Logitech).
Suddenly noone in the conference can hear me. The workaround is to leave the 
conference and rejoin.

As the simptoms are similar, this might help... or not.

David Balažic
Lead Engineer
www.comtrade.com

> -----Original Message-----
> From: Support [mailto:support-boun...@pidgin.im] On Behalf Of Joakim Tjernlund
> Sent: 26. June 2018 17:40
> To: support@pidgin.im
> Subject: Lost microphone, some news [dkim]
> 
> 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@pidgin.im mailing list
> Want to unsubscribe?  Use this link:
> https://pidgin.im/cgi-bin/mailman/listinfo/support

_______________________________________________
Support@pidgin.im mailing list
Want to unsubscribe?  Use this link:
https://pidgin.im/cgi-bin/mailman/listinfo/support

Reply via email to