From cbd13883a8ea2a78f881bf043a35b5e978ed18cc Mon Sep 17 00:00:00 2001 From: Stian Selnes Date: Mon, 16 Jun 2014 17:20:32 +0200 Subject: [PATCH] rtph263depay: Don't drop mode b packets with picture start code Some buggy payloaders, e.g. rtph263pay, may use mode B for packets that starts with a picture (or GOB) start code although it's not allowed. Let's be nice and not drop these packets/frames. https://bugzilla.gnome.org/show_bug.cgi?id=773516 --- gst/rtp/gstrtph263depay.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gst/rtp/gstrtph263depay.c b/gst/rtp/gstrtph263depay.c index 0f1bed7e5b..c45639a829 100644 --- a/gst/rtp/gstrtph263depay.c +++ b/gst/rtp/gstrtph263depay.c @@ -310,9 +310,10 @@ gst_rtp_h263_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp) payload_len -= header_len; if (!rtph263depay->start) { - /* do not skip this fragment if it is a Mode A with picture start code */ - if (!F && payload_len > 4 && (GST_READ_UINT32_BE (payload) >> 10 == 0x20)) { - GST_DEBUG ("Mode A with PSC => frame start"); + /* only mode A should be used when there is a picture start code, but + * buggy payloaders may send mode B/C in start of frame */ + if (payload_len > 4 && (GST_READ_UINT32_BE (payload) >> 10 == 0x20)) { + GST_DEBUG ("Mode %c with PSC => frame start", "ABC"[F+P]); rtph263depay->start = TRUE; if ((! !(payload[4] & 0x02)) != I) { GST_DEBUG ("Wrong Picture Coding Type Flag in rtp header");