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, ×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
-------------- 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