From: Olivier CrĂȘte Date: Mon, 12 Aug 2013 16:27:33 +0000 (-0400) Subject: srtp: Let packets through without touching them if no crypto or auth is set X-Git-Tag: 1.19.3~507^2~13192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d346e7560682a824caf38add63cb3a55164de808;p=platform%2Fupstream%2Fgstreamer.git srtp: Let packets through without touching them if no crypto or auth is set --- diff --git a/ext/srtp/gstsrtpdec.c b/ext/srtp/gstsrtpdec.c index 2c4c727..41efb1d 100644 --- a/ext/srtp/gstsrtpdec.c +++ b/ext/srtp/gstsrtpdec.c @@ -858,6 +858,11 @@ gst_srtp_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf, goto drop_buffer; } + if (!STREAM_HAS_CRYPTO (stream)) { + GST_OBJECT_UNLOCK (filter); + goto push_out; + } + GST_LOG_OBJECT (pad, "Received %s buffer of size %" G_GSIZE_FORMAT " with SSRC = %u", is_rtcp ? "RTCP" : "RTP", gst_buffer_get_size (buf), ssrc); @@ -925,6 +930,7 @@ unprotect: if (gst_srtp_get_soft_limit_reached ()) request_key_with_signal (filter, ssrc, SIGNAL_SOFT_LIMIT); +push_out: /* Push buffer to source pad */ otherpad = (GstPad *) gst_pad_get_element_private (pad); ret = gst_pad_push (otherpad, buf); diff --git a/ext/srtp/gstsrtpenc.c b/ext/srtp/gstsrtpenc.c index 8ce2a6b..ddd5661 100644 --- a/ext/srtp/gstsrtpenc.c +++ b/ext/srtp/gstsrtpenc.c @@ -938,8 +938,6 @@ gst_srtp_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf, GST_OBJECT_LOCK (filter); - size_max = gst_buffer_get_size (buf) + SRTP_MAX_TRAILER_LEN + 10; - /* Update source caps if asked */ if (do_setcaps) { GstCaps *caps; @@ -956,7 +954,15 @@ gst_srtp_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf, GST_OBJECT_LOCK (filter); } + if (!HAS_CRYPTO (filter)) { + GST_OBJECT_UNLOCK (filter); + otherpad = get_rtp_other_pad (pad); + return gst_pad_push (otherpad, buf); + } + + /* Create a bigger buffer to add protection */ + size_max = gst_buffer_get_size (buf) + SRTP_MAX_TRAILER_LEN + 10; bufout = gst_buffer_new_allocate (NULL, size_max, NULL); gst_buffer_map (buf, &mapin, GST_MAP_READ);