Lost microphone, some news
David Balažic
David.Balazic at comtrade.com
Mon Jul 2 05:55:33 EDT 2018
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-bounces at pidgin.im] On Behalf Of Joakim Tjernlund
> Sent: 26. June 2018 17:40
> To: support at 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 at pidgin.im mailing list
> Want to unsubscribe? Use this link:
> https://pidgin.im/cgi-bin/mailman/listinfo/support
More information about the Support
mailing list