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