FsAppTransmitter / dummy call in nullprpl

David Woodhouse dwmw2 at infradead.org
Tue Feb 20 07:00:28 EST 2018


On Sat, 2018-02-03 at 00:45 +0000, David Woodhouse wrote:
> 
> Firstly, I need to *remove* libgstsrtp.so from my system. Unless I do
> that, it fails to work:
> 
> 0:00:15.265806297  5308 0x5573bd72c830 DEBUG               GST_CAPS gstpad.c:2215:gst_pad_link_check_compatible_unlocked: src caps application/x-srtp
> 0:00:15.265814903  5308 0x5573bd72c830 DEBUG               GST_CAPS gstpad.c:2217:gst_pad_link_check_compatible_unlocked: sink caps application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)48000, encoding-name=(string){ OPUS, X-GST-OPUS-DRAFT-SPITTKA-00 }
> 0:00:15.265878067  5308 0x5573bd72c830 INFO                GST_PADS gstpad.c:2464:gst_pad_link_full: link between tee1:src_1 and valve1:sink failed: no common format

I can fix that thus, although I haven't actually checked that encrypted
streams still work:

diff --git a/gst/fsrtpconference/fs-rtp-session.c b/gst/fsrtpconference/fs-rtp-session.c
index b040a5c..04176f9 100644
--- a/gst/fsrtpconference/fs-rtp-session.c
+++ b/gst/fsrtpconference/fs-rtp-session.c
@@ -1167,7 +1167,8 @@ _rtpbin_request_encoder (GstElement *rtpbin, guint session_id,
 {
   FsRtpSession *self = FS_RTP_SESSION (user_data);
 
-  if (self->id == session_id && self->priv->srtpenc) {
+  if (self->id == session_id && self->priv->srtpenc &&
+      self->priv->encryption_parameters) {
     return gst_object_ref (self->priv->srtpenc);
   } else {
     return NULL;
@@ -1180,7 +1181,8 @@ _rtpbin_request_decoder (GstElement *rtpbin, guint session_id,
 {
   FsRtpSession *self = FS_RTP_SESSION (user_data);
 
-  if (self->id == session_id && self->priv->srtpdec)
+  if (self->id == session_id && self->priv->srtpdec &&
+      self->priv->encryption_parameters)
     return gst_object_ref (self->priv->srtpdec);
   else
     return NULL;


> Secondly, I have to upgrade to the latest farstream (I've been testing
> on Ubuntu 16.04 with farstream 0.2.7). Unless I do that, I can't find
> any way to make OPUS work. Whatever I've put in fs-codecs.conf and
> whatever I've put in farstream-{send,recv}-profile properties, I
> haven't managed to get it to succeed.

This seems to require commits 2b085b0a3 and db14343c ("rtp: Put
channels as encoding-params as expected", and "rtp: Parse payloaders
with multiple names" respectively) from 0.2.8, so I'm not convinced
I'll ever get that to work without upgrading to 0.2.8.

I still haven't *actually* got a single channel stream to work; it's
still setting up a stereo source pipeline into opusenc. But at least
it's sending something now.

> After I've solved those, I'll turn my attention to the fact that
> although the nullprpl works with those caveats, I still haven't got my
> own code with the "real" GstAppSrc/GstAppSink pipeline working. I get
> outbound audio from my mic to the network, but I never see a farstream-
> recv-codecs-changed message, and the inbound pipeline isn't set up.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 5213 bytes
Desc: not available
URL: <https://pidgin.im/pipermail/devel/attachments/20180220/35fd888e/attachment.bin>


More information about the Devel mailing list