[Bug 697672] VP8 passed through rtpbin decodes a single frame and then fails to decode until a key frame passed through

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Apr 10 00:21:41 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=697672
  GStreamer | gst-plugins-bad | 1.0.5

--- Comment #3 from tcdgreenwood at hotmail.com 2013-04-10 07:21:36 UTC ---
I decided to see if I could simplify the means to reproduce.  Turns out you
only need RTP in one direction:

Run this first:
gst-launch-1.0 -v rtpbin name=rtpvp8 udpsrc name=vp8recv port=5002
caps="application/x-rtp, clock-rate=(int)90000,
encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, media=(string)video"
! rtpvp8.recv_rtp_sink_0 rtpvp8. ! rtpvp8depay ! vp8dec ! videoconvert !
osxvideosink

Run this second:
gst-launch-1.0 -v rtpbin name=rtpvp8 videotestsrc pattern=ball ! textoverlay
text="VP8" ! 'video/x-raw,width=320,height=240,framerate=15/1' ! vp8enc
cpu-used=15 keyframe-max-dist=10000 ! rtpvp8pay ! rtpvp8.send_rtp_sink_0
rtpvp8.send_rtp_src_0 ! udpsink async=false port=5002 host=::FFFF:7F00:0001
name=vrtpsink

You should see a very short section of video before it pauses (sometimes just a
static image).

Interestingly if the receiver cuts out rtpbin then it works OK.  Instead of the
first pipeline run:
gst-launch-1.0 -v udpsrc name=vp8recv port=5002 caps="application/x-rtp,
clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-IETF-01,
payload=(int)96, media=(string)video" ! rtpvp8depay ! vp8dec ! videoconvert !
osxvideosink

Unfortunately this is not a solution for me as I need rtpbin for RTCP etc.

The difference in logging appears to be related to the setting of caps twice:

...
0:00:03.199149000  8345 0x7fe44310a190 INFO               GST_EVENT
gstevent.c:1313:gst_event_new_reconfigure: creating reconfigure event
/GstPipeline:pipeline0/GstRtpBin:rtpvp8.GstGhostPad:recv_rtp_src_0_1996705949_96:
caps = application/x-rtp, clock-rate=(int)90000,
encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, media=(string)video,
ssrc=(uint)1996705949
0:00:03.199235000  8345 0x7fe44310a190 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:191:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> Set
caps
0:00:03.199243000  8345 0x7fe44310a190 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:201:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> NPT
start 0
...
0:00:03.265670000  8345 0x7fe44310a190 INFO               GST_EVENT
gstevent.c:628:gst_event_new_caps: creating caps event 0x7fe448011540
/GstPipeline:pipeline0/GstRtpBin:rtpvp8/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink:
caps = application/x-rtp, clock-rate=(int)90000,
encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, media=(string)video
/GstPipeline:pipeline0/GstRtpBin:rtpvp8/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink:
caps = application/x-rtp, clock-rate=(int)90000,
encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, media=(string)video
0:00:03.265779000  8345 0x7fe44310a190 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:191:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> Set
caps
/GstPipeline:pipeline0/GstRtpBin:rtpvp8/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink:
caps = application/x-rtp, clock-rate=(int)90000,
encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, media=(string)video
0:00:03.265791000  8345 0x7fe44310a190 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:201:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> NPT
start 0
0:00:03.265804000  8345 0x7fe44310a190 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:209:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> NPT
stop 18446744073709551615
/GstPipeline:pipeline0/GstRtpBin:rtpvp8.GstGhostPad:recv_rtp_sink_0: caps =
application/x-rtp, clock-rate=(int)90000,
encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, media=(string)video
...

On the good one the rtpvp8depay only get's "Set caps" once:

...
0:00:00.237910000  8221 0x7fb5eb0efa30 INFO               GST_EVENT
gstevent.c:628:gst_event_new_caps: creating caps event 0x7fb5ec82b0f0
/GstPipeline:pipeline0/GstUDPSrc:vp8recv.GstPad:src: caps = application/x-rtp,
clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-IETF-01,
payload=(int)96, media=(string)video
0:00:00.237999000  8221 0x7fb5eb0efa30 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:191:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> Set
caps
0:00:00.238007000  8221 0x7fb5eb0efa30 DEBUG       rtpbasedepayload
gstrtpbasedepayload.c:201:gst_rtp_base_depayload_setcaps:<rtpvp8depay0> NPT
start 0
...

I will attach full debug logs.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list