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, ×tamp); > 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