EricssonResearch / openwebrtc-gst-plugins

OpenWebRTC specific GStreamer plugins
BSD 2-Clause "Simplified" License
50 stars 46 forks source link

ercolorspace: incomplete colorspace transformations #25

Closed ijsf closed 9 years ago

ijsf commented 9 years ago

In case of the ercolorspace plugin, the sink/source pad capabilities are currently:

The following transformations are currently implemented:

The following transformation are possibly missing and causing issues:

Testing the current OpenWebRTC + Bowser master built with Cerbero on an iPad Mini 1 with iOS 8.1.3 yields the following error:

==== Error message start ====
Error in element source-video-convert-1.
Error: Internal GStreamer error: code not implemented.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Debugging info: src/gstercolorspace.c(340): gst_ercolorspace_transform_frame (): /GstPipeline:transport-agent-1/GstBin:source-bin-1/GstERColorspace:source-video-convert-1:
colorspace conversion failed: unsupported formats
==== Error message stop ====
==== Error message start ====
Error in element source-1.
Error: Internal data flow error.
Debugging info: gstbasesrc.c(2943): void gst_base_src_loop(GstPad *) (): /GstPipeline:transport-agent-1/GstBin:source-bin-1/GstInterVideoSrc:source-1:
streaming task paused, reason not-negotiated (-4)
==== Error message stop ====
==== Error message start ====
Error in element source-queue-1.
Error: Internal data flow error.
Debugging info: gstqueue.c(873): gboolean gst_queue_handle_sink_event(GstPad *, GstObject *, GstEvent *) (): /GstPipeline:transport-agent-1/GstBin:source-bin-1/GstQueue:source-queue-1:
streaming task paused, reason not-negotiated (-4)
==== Error message stop ====

Also see https://github.com/EricssonResearch/openwebrtc/issues/168

ijsf commented 9 years ago

P.S. Considering libyuv already has support for all the required conversions, more architectures (ercolorspace doesn't seem to support arm64) and is heavily tested, perhaps it would make sense to somehow use this instead of the current implementation?

stefanalund commented 9 years ago

Do you know if libyuv has NEON optimizations? That was the main reason for using our own implementation.

superdump commented 9 years ago

Libyuv has neon optimisations. But so does orc that is used for GStreamer's videoconvert element that can do colour space conversion. However, we currently should avoid any software colour space conversion on iOS due to the recent optimisation work in GStreamer to make avfvideosrc, vtenc, vtdec and glimagesink work better together. Android is another question but it is planned. However, the question may have to be revisited if we cannot make effective used of the hardware for rotation and mirroring. I would hope we can.

stefanalund commented 9 years ago

Not sure if you addressed the problem here @superdump :)

superdump commented 9 years ago

Ah iPad Mini 1. Indeed, that may need colour space conversion in software. Good point. Time to retest and see what code is most effective or optimize to be the most effective. :)

superdump commented 9 years ago

And fix the missing mappings in the caps.

ijsf commented 9 years ago

I would suggest using libyuv instead of resorting to custom implementations.

The downside is that libyuv (and all its Google building tools, e.g. depot-tools) have to be integrated with OpenWebRTC's Cerbero.

sdroege commented 9 years ago

I think we should try to get orc to produce optimized NEON assembly at build time (as compared to runtime as a JIT compiler) and then use videoconvert. With all the improvements in GStreamer's GIT master, this seems to be much faster than what we had before and also one of the best quality and most correct conversion implementations that are out there currently.

superdump commented 9 years ago

That would be my preference too. Given OpenWebRTC is built on top of GStreamer we generally try to use what we can from GStreamer first. Then if there isn't anything we maybe use a separate library or write our own, depending on how much work is involved.

Sebastian, can you detail in a separate issue how we might go about making Orc build optimized code at build time? Maybe someone can pick it up at some point or help out if we don't get there first.

@isjf - could you possibly edit the scheme (click on the device in the top-left of Xcode) and add a GST_DEBUG environment variable with a value of GST_CAPS:6? Then paste the log somewhere appropriate. From that we should be able to see precisely what caps negotiation is failing which would be great to know.

Also, as a note, all the formats which are not conversions but have the same output format can be easily fixed by handling pass through properly if we don't already.

sdroege commented 9 years ago

@superdump There's https://bugzilla.gnome.org/show_bug.cgi?id=742843

sdroege commented 9 years ago

https://github.com/EricssonResearch/openwebrtc-gst-plugins/issues/26

stefanalund commented 9 years ago

Same problem reported by @emphilip.

stefanalund commented 9 years ago

I get the same problem on an iPhone 6 (when forcing 32-bit only)

sdroege commented 9 years ago

Ok, so let's just trivially fix this for now in ercolorspace by only allowing passthrough with RGB formats. I'll put together a patch in a bit.

stefanalund commented 9 years ago

Thanks @sdroege sounds like a good approach.

sdroege commented 9 years ago

@stefanalund can you test my patch at https://github.com/sdroege/openwebrtc-gst-plugins/commit/f5ad0dd9bf38d6658bdfd732d5df651b72ca9397 ? That should fix at least this specific problem.

sdroege commented 9 years ago

This specific bug should be fixed, but there seem to be further problems with black frames. One of them being the loss of the initial keyframe most of the time... but also other things it seems.

stefanalund commented 9 years ago

Not sure, there are pipeline errors still:

** Message: Loaded namespace: GLib
** Message: Loaded namespace: GObject
** Message: Loaded namespace: Gio
** Message: Loaded namespace: GIRepository
** Message: Loaded namespace: Owr
WARNING: no real random source present!
** Message: ready

(<unknown>:1194): GStreamer-CRITICAL **: gst_query_set_latency: assertion 'GST_CLOCK_TIME_IS_VALID (min_latency)' failed
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstInterVideoSrc:source-0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstQueue:source-queue-0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstQueue:source-queue-0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstVideoScale:source-video-scale-0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstERColorspace:source-video-convert-0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstCapsFilter:source-output-capsfilter-0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstQueue:source-output-queue-0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstCapsFilter:source-output-capsfilter-0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstERColorspace:source-video-convert-0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstVideoScale:source-video-scale-0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0/GstQueue:source-output-queue-0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0.GstGhostPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:image-renderer-bin-0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:image-renderer-bin-0/GstAppSink:image-renderer-appsink.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:image-renderer-bin-0.GstGhostPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-0/GstBin:source-bin-0.GstGhostPad:src.GstProxyPad:proxypad2: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:local-video-capture-source-bin-0/GstAVFVideoSrc:video-source.GstPad:src: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstCapsFilter:video-source-capsfilter.GstPad:src: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstTee:source-tee.GstTeePad:src_0: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstQueue:source-tee-fakesink-queue.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstTee:source-tee.GstTeePad:src_1: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-0/GstQueue:sink-queue-0.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-0/GstQueue:sink-queue-0.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-0.GstGhostPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstTee:source-tee.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstCapsFilter:video-source-capsfilter.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-0/GstInterVideoSink:sink-0.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstOutputSelector:rtcp_output_selector_1: active-pad = "\(GstPad\)\ src_0"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstOutputSelector:rtcp_output_selector_1: active-pad = "\(GstPad\)\ src_1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-1.GstGhostPad:sink.GstProxyPad:proxypad28: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-1/GstQueue:sink-queue-1.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-1.GstGhostPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-1/GstQueue:sink-queue-1.GstPad:src: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:local-video-capture-source-bin-0/GstBin:source-sink-bin-1/GstInterVideoSink:sink-1.GstPad:sink: caps = "video/x-raw\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ format\=\(string\)BGRA\,\ framerate\=\(fraction\)60/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstErDtlsEnc:dtls-encoder.GstPad:src: caps = application/x-dtls
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstFunnel:funnel.GstFunnelPad:funnelpad0: caps = application/x-dtls
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstFunnel:funnel.GstPad:src: caps = application/x-dtls
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1.GstGhostPad:src: caps = application/x-dtls
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstNiceSink:nice-rtp-sink-1.GstPad:sink: caps = application/x-dtls
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1.GstGhostPad:src.GstProxyPad:proxypad13: caps = application/x-dtls
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstInterVideoSrc:source-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstQueue:source-queue-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstVideoScale:source-video-scale-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstERColorspace:source-video-convert-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstCapsFilter:source-output-capsfilter-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstQueue:source-output-queue-1.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstQueue:source-output-queue-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1/GstQueue:source-output-queue-1.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1.GstGhostPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1.GstGhostPad:video_sink_0_1.GstProxyPad:proxypad27: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1.GstGhostPad:video_sink_0_1.GstProxyPad:proxypad26: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstQueue:send-input-video-queue-1.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1.GstGhostPad:video_sink_0_1: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1.GstGhostPad:video_sink_0_1: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1.GstGhostPad:video_sink_0_1: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:source-bin-1.GstGhostPad:src.GstProxyPad:proxypad29: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstVP8Enc:encoder_vp8enc_0.GstPad:src: caps = "video/x-vp8\,\ profile\=\(string\)0\,\ streamheader\=\(buffer\)\<\ 4f56503830010100028001e00000010000010000001e00000001\ \>\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstCapsFilter:send-input-video-encoder-capsfilter-1.GstPad:src: caps = "video/x-vp8\,\ profile\=\(string\)0\,\ streamheader\=\(buffer\)\<\ 4f56503830010100028001e00000010000010000001e00000001\ \>\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstRtpVP8Pay:pay_rtpvp8pay_1.GstPad:src: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstCapsFilter:send-rtp-capsfilter-1.GstPad:src: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1.GstGhostPad:src_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:send_rtp_sink_1.GstProxyPad:proxypad18: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstBin:rtprtxsend_1.GstGhostPad:sink_1.GstProxyPad:proxypad16: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstBin:rtprtxsend_1/GstRtpRtxSend:rtprtxsend0.GstPad:src: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstBin:rtprtxsend_1.GstGhostPad:src_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtp_src: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:send_rtp_src_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1.GstGhostPad:rtp_sink_1.GstProxyPad:proxypad20: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1.GstGhostPad:rtp_sink_1.GstProxyPad:proxypad19: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder.GstPad:rtp_src_1: caps = "application/x-srtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912\,\ srtp-key\=\(buffer\)24048be00e4b6aa852d1c3b7e0fa945e0cbbf4cd18343072c8ec9ae1201d\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstFunnel:funnel.GstFunnelPad:funnelpad2: caps = "application/x-srtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912\,\ srtp-key\=\(buffer\)24048be00e4b6aa852d1c3b7e0fa945e0cbbf4cd18343072c8ec9ae1201d\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder.GstPad:rtp_sink_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1.GstGhostPad:rtp_sink_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1.GstGhostPad:rtp_sink_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:send_rtp_src_1.GstProxyPad:proxypad17: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtp_sink: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstBin:rtprtxsend_1.GstGhostPad:src_1.GstProxyPad:proxypad15: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstBin:rtprtxsend_1/GstRtpRtxSend:rtprtxsend0.GstPad:sink: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstBin:rtprtxsend_1.GstGhostPad:sink_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:send_rtp_sink_1: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1.GstGhostPad:src_1.GstProxyPad:proxypad25: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstCapsFilter:send-rtp-capsfilter-1.GstPad:sink: caps = "application/x-rtp\,\ media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true\,\ ssrc\=\(uint\)3408759917\,\ timestamp-offset\=\(uint\)2183386817\,\ seqnum-offset\=\(uint\)9912"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstRtpVP8Pay:pay_rtpvp8pay_1.GstPad:sink: caps = "video/x-vp8\,\ profile\=\(string\)0\,\ streamheader\=\(buffer\)\<\ 4f56503830010100028001e00000010000010000001e00000001\ \>\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstCapsFilter:send-input-video-encoder-capsfilter-1.GstPad:sink: caps = "video/x-vp8\,\ profile\=\(string\)0\,\ streamheader\=\(buffer\)\<\ 4f56503830010100028001e00000010000010000001e00000001\ \>\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-input-bin-1/GstVP8Enc:encoder_vp8enc_0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)30/1"
0:00:32.992751000  1194 0x16231630 ERROR          intervideosrc gstintervideosrc.c:409:gst_inter_video_src_create:<source-1> Failed to negotiate caps video/x-raw, format=(string)BGRA, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)sRGB, framerate=(fraction)30/1
==== Error message start ====
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin/GstRtpSession:rtpsession0.GstPad:send_rtcp_src: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_1: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1.GstGhostPad:rtcp_sink_1.GstProxyPad:proxypad23: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstOutputSelector:rtcp_output_selector_1.GstPad:src_1: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1.GstGhostPad:rtcp_sink_1.GstProxyPad:proxypad22: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1/GstSrtpEnc:srtp-encoder.GstPad:rtcp_src_1: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1/GstFunnel:funnel.GstFunnelPad:funnelpad4: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1/GstSrtpEnc:srtp-encoder.GstPad:rtcp_sink_1: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1.GstGhostPad:rtcp_sink_1: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstOutputSelector:rtcp_output_selector_1.GstPad:sink: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1.GstGhostPad:rtcp_sink_1: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:send_rtcp_src_1.GstProxyPad:proxypad24: caps = application/x-rtcp
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1/GstSrtpEnc:srtp-encoder.GstPad:rtcp_src_1: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1/GstFunnel:funnel.GstFunnelPad:funnelpad4: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1/GstFunnel:funnel.GstPad:src: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1.GstGhostPad:src: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstNiceSink:nice-rtcp-sink-1.GstPad:sink: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtcp_encoder_1.GstGhostPad:src.GstProxyPad:proxypad14: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)14e30e004fd54122b5997ed4525df1248e000268dba77331a7701c903ca7\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
Error in element source-1.
Error: Internal data flow error.
Debugging info: gstbasesrc.c(2943): void gst_base_src_loop(GstPad *) (): /GstPipeline:transport-agent-1/GstBin:source-bin-1/GstInterVideoSrc:source-1:
streaming task paused, reason not-negotiated (-4)
==== Error message stop ====
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-input-bin-1/GstErDtlsSrtpDec:dtls_srtp_rtp_decoder_1: peer-pem = -----BEGIN CERTIFICATE-----
MIIBmTCCAQKgAwIBAgIELKDZ5zANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZX
ZWJSVEMwHhcNMTUwMjE3MjA1ODE4WhcNMTUwMzE5MjA1ODE4WjARMQ8wDQYDVQQD
DAZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK70Ufk3kOGqSsv3
jtFOP1QOmtanhiMjXD9kVMhmLNXumQc1B0PBqj/SAoNVW/oTnhjaR7Z+yusy29ew
Y8AGdtK60OFGS6+cLUkgiibW1HxKRl6OAVKIJRIKLJQjcBEnDE9mU/hlQkV4dGs0
qy4yVGsg02TdGRIuBjeC6aaKFegTAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAbbPu
Hctq01JzEeLnD+MXNQGoHdyNGb2PzjfQSxtqWEsrKKjekYY94OA944wS5oF8yCYa
SjRdL7oyYF6WXUvghhGJJHoQON/vqR7h8joNS5v+UEa5+qxlQaTdOWZeWZQfrXO7
0dRfWArN6rYQev0igOoCmYVzdH6VChBUnGmyD1c=
-----END CERTIFICATE-----

/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-input-bin-1/GstErDtlsSrtpDec:dtls_srtp_rtp_decoder_1/GstErDtlsDec:dtls-decoder: peer-pem = -----BEGIN CERTIFICATE-----
MIIBmTCCAQKgAwIBAgIELKDZ5zANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZX
ZWJSVEMwHhcNMTUwMjE3MjA1ODE4WhcNMTUwMzE5MjA1ODE4WjARMQ8wDQYDVQQD
DAZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK70Ufk3kOGqSsv3
jtFOP1QOmtanhiMjXD9kVMhmLNXumQc1B0PBqj/SAoNVW/oTnhjaR7Z+yusy29ew
Y8AGdtK60OFGS6+cLUkgiibW1HxKRl6OAVKIJRIKLJQjcBEnDE9mU/hlQkV4dGs0
qy4yVGsg02TdGRIuBjeC6aaKFegTAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAbbPu
Hctq01JzEeLnD+MXNQGoHdyNGb2PzjfQSxtqWEsrKKjekYY94OA944wS5oF8yCYa
SjRdL7oyYF6WXUvghhGJJHoQON/vqR7h8joNS5v+UEa5+qxlQaTdOWZeWZQfrXO7
0dRfWArN6rYQev0igOoCmYVzdH6VChBUnGmyD1c=
-----END CERTIFICATE-----

/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-input-bin-1/GstErDtlsSrtpDec:dtls_srtp_rtp_decoder_1: peer-pem = -----BEGIN CERTIFICATE-----
MIIBmTCCAQKgAwIBAgIELKDZ5zANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZX
ZWJSVEMwHhcNMTUwMjE3MjA1ODE4WhcNMTUwMzE5MjA1ODE4WjARMQ8wDQYDVQQD
DAZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK70Ufk3kOGqSsv3
jtFOP1QOmtanhiMjXD9kVMhmLNXumQc1B0PBqj/SAoNVW/oTnhjaR7Z+yusy29ew
Y8AGdtK60OFGS6+cLUkgiibW1HxKRl6OAVKIJRIKLJQjcBEnDE9mU/hlQkV4dGs0
qy4yVGsg02TdGRIuBjeC6aaKFegTAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAbbPu
Hctq01JzEeLnD+MXNQGoHdyNGb2PzjfQSxtqWEsrKKjekYY94OA944wS5oF8yCYa
SjRdL7oyYF6WXUvghhGJJHoQON/vqR7h8joNS5v+UEa5+qxlQaTdOWZeWZQfrXO7
0dRfWArN6rYQev0igOoCmYVzdH6VChBUnGmyD1c=
-----END CERTIFICATE-----

/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-input-bin-1/GstErDtlsSrtpDec:dtls_srtp_rtp_decoder_1/GstErDtlsDec:dtls-decoder: peer-pem = -----BEGIN CERTIFICATE-----
MIIBmTCCAQKgAwIBAgIELKDZ5zANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZX
ZWJSVEMwHhcNMTUwMjE3MjA1ODE4WhcNMTUwMzE5MjA1ODE4WjARMQ8wDQYDVQQD
DAZXZWJSVEMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK70Ufk3kOGqSsv3
jtFOP1QOmtanhiMjXD9kVMhmLNXumQc1B0PBqj/SAoNVW/oTnhjaR7Z+yusy29ew
Y8AGdtK60OFGS6+cLUkgiibW1HxKRl6OAVKIJRIKLJQjcBEnDE9mU/hlQkV4dGs0
qy4yVGsg02TdGRIuBjeC6aaKFegTAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAbbPu
Hctq01JzEeLnD+MXNQGoHdyNGb2PzjfQSxtqWEsrKKjekYY94OA944wS5oF8yCYa
SjRdL7oyYF6WXUvghhGJJHoQON/vqR7h8joNS5v+UEa5+qxlQaTdOWZeWZQfrXO7
0dRfWArN6rYQev0igOoCmYVzdH6VChBUnGmyD1c=
-----END CERTIFICATE-----

/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder: random-key = false
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder: key = 37a727c2d1540465aeb466bb158d6730f07868a84b51432d5c5b3402c133
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder: rtcp-auth = GST_SRTP_AUTH_HMAC_SHA1_80
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder: rtp-auth = GST_SRTP_AUTH_HMAC_SHA1_80
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder: rtcp-cipher = GST_SRTP_CIPHER_AES_128_ICM
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstSrtpEnc:srtp-encoder: rtp-cipher = GST_SRTP_CIPHER_AES_128_ICM
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-input-bin-1/GstErDtlsSrtpDec:dtls_srtp_rtp_decoder_1/GstSrtpDec:srtp-decoder.GstPad:rtcp_src: caps = application/x-rtcp

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:4164:gst_pad_push_data:<rtpsession0:sync_src> Got data flow before stream-start event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:4169:gst_pad_push_data:<rtpsession0:sync_src> Got data flow before segment event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:3930:gst_pad_chain_data_unchecked:<rtpssrcdemux0:rtcp_sink> Got data flow before stream-start event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:3935:gst_pad_chain_data_unchecked:<rtpssrcdemux0:rtcp_sink> Got data flow before segment event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:4164:gst_pad_push_data:<rtpssrcdemux0:rtcp_src_849107702> Got data flow before stream-start event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:4169:gst_pad_push_data:<rtpssrcdemux0:rtcp_src_849107702> Got data flow before segment event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:3930:gst_pad_chain_data_unchecked:<rtpjitterbuffer0:sink_rtcp> Got data flow before stream-start event

(<unknown>:1194): GStreamer-WARNING **: gstpad.c:3935:gst_pad_chain_data_unchecked:<rtpjitterbuffer0:sink_rtcp> Got data flow before segment event
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1.GstGhostPad:sink.GstProxyPad:proxypad31: caps = "application/x-rtp\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ clock-rate\=\(int\)90000\,\ media\=\(string\)video\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1/GstRtpVP8Depay:depay_rtpvp8depay_2.GstPad:src: caps = "video/x-vp8\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1/GstVideoRepair:videorepair1_1.GstPad:src: caps = "video/x-vp8\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1/GstVP8Dec:decoder_vp8dec_3.GstPad:sink: caps = "video/x-vp8\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1/GstVideoRepair:videorepair1_1.GstPad:sink: caps = "video/x-vp8\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1/GstRtpVP8Depay:depay_rtpvp8depay_2.GstPad:sink: caps = "application/x-rtp\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ clock-rate\=\(int\)90000\,\ media\=\(string\)video\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1.GstGhostPad:sink: caps = "application/x-rtp\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ clock-rate\=\(int\)90000\,\ media\=\(string\)video\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstRtpBin:rtpbin.GstGhostPad:recv_rtp_src_1_849107702_100.GstProxyPad:proxypad30: caps = "application/x-rtp\,\ encoding-name\=\(string\)VP8-DRAFT-IETF-01\,\ payload\=\(int\)100\,\ clock-rate\=\(int\)90000\,\ media\=\(string\)video\,\ rtcp-fb-ccm-fir\=\(boolean\)true\,\ rtcp-fb-nack-pli\=\(boolean\)true"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1/GstVP8Dec:decoder_vp8dec_3.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1.GstGhostPad:video_src_0_1: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1.GstGhostPad:video_src_0_1: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1.GstGhostPad:sink.GstProxyPad:proxypad34: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstTee:tee.GstTeePad:src_0: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstQueue:queue.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstTee:tee.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstTee:tee.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1.GstGhostPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1.GstGhostPad:video_src_0_1.GstProxyPad:proxypad33: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-output-bin-1.GstGhostPad:video_src_0_1.GstProxyPad:proxypad32: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstInterVideoSrc:source-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-queue-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-queue-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstVideoScale:source-video-scale-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstERColorspace:source-video-convert-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstCapsFilter:source-output-capsfilter-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-output-queue-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-output-queue-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstCapsFilter:source-output-capsfilter-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstERColorspace:source-video-convert-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstVideoScale:source-video-scale-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)15/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstBin:source-sink-bin-2.GstGhostPad:sink.GstProxyPad:proxypad36: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstBin:source-sink-bin-2/GstQueue:sink-queue-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstBin:source-sink-bin-2/GstInterVideoSink:sink-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstBin:source-sink-bin-2/GstQueue:sink-queue-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:transport-agent-1/GstBin:video-src-0-1/GstBin:source-sink-bin-2.GstGhostPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)0/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstInterVideoSrc:source-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-queue-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstVideoScale:source-video-scale-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstERColorspace:source-video-convert-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstCapsFilter:source-output-capsfilter-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstCapsFilter:source-output-capsfilter-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-output-queue-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstCapsFilter:source-output-capsfilter-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstQueue:source-output-queue-2.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2.GstGhostPad:src: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:image-renderer-bin-1.GstGhostPad:sink.GstProxyPad:proxypad35: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:image-renderer-bin-1/GstAppSink:image-renderer-appsink.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:image-renderer-bin-1.GstGhostPad:sink: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2.GstGhostPad:src.GstProxyPad:proxypad37: caps = "video/x-raw\,\ format\=\(string\)BGRA\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstERColorspace:source-video-convert-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)15/1"
/GstPipeline:media-renderer-1/GstBin:source-bin-2/GstVideoScale:source-video-scale-2.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ chroma-site\=\(string\)jpeg\,\ colorimetry\=\(string\)bt601\,\ framerate\=\(fraction\)15/1"
stefanalund commented 9 years ago

Or perhaps this is related to ICE?

streaming task paused, reason not-negotiated (-4)
superdump commented 9 years ago

Whenever you see 'not-negotiated' it means that the caps on one side of some element couldn't be transformed to the caps on the other side of that element. Then it is good to provide a GST_DEBUG log with GST_CAPS:6 or something like that. In that log we should then be able to find where the caps failed to intersect which prints a message saying that the caps intersection was 'EMPTY'. Just above that in the log it should say what caps were trying to be transformed from/to and you can normally see straight away what the problem is. In this case it is likely and unsupported colour space conversion or something.

sdroege commented 9 years ago

Also the warnings about data flow before events should be gone with latest gst-plugins-good master. I fixed that yesterday. It might be related to the not-negotiated error or not.

Please update gst-plugins-good at least, and if it still happens a debug log like @superdump suggested would help

stefanalund commented 9 years ago

Rebuilt but with no changes. Here is the (part of the) log @superdump was asking for:

ratio=(fraction)[ 1/2147483647, 2147483647/1 ]
0:00:14.233717000   700 0x18babaf0 DEBUG               GST_CAPS gstutils.c:2876:GstCaps *gst_pad_peer_query_caps(GstPad *, GstCaps *):<encoder_vp8enc_0:src> peer query returned video/x-vp8, width=(int)640, height=(int)480, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)[ 1/2147483647, 2147483647/1 ]
0:00:14.233863000   700 0x18babaf0 DEBUG               GST_CAPS gstutils.c:2876:GstCaps *gst_pad_peer_query_caps(GstPad *, GstCaps *):<source-output-capsfilter-1:src> peer query returned EMPTY
0:00:14.233953000   700 0x18babaf0 DEBUG               GST_CAPS gstutils.c:2876:GstCaps *gst_pad_peer_query_caps(GstPad *, GstCaps *):<source-video-convert-1:src> peer query returned EMPTY
0:00:14.234015000   700 0x18babaf0 DEBUG               GST_CAPS gstutils.c:2876:GstCaps *gst_pad_peer_query_caps(GstPad *, GstCaps *):<source-video-scale-1:src> peer query returned EMPTY
0:00:14.234069000   700 0x18babaf0 DEBUG               GST_CAPS gstutils.c:2830:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<source-queue-1:sink> query returned EMPTY
0:00:14.234115000   700 0x18babaf0 DEBUG               GST_CAPS gstpad.c:2654:GstCaps *gst_pad_get_allowed_caps(GstPad *):<source-1:src> allowed caps EMPTY
0:00:14.234167000   700 0x18babaf0 ERROR          intervideosrc gstintervideosrc.c:409:gst_inter_video_src_create:<source-1> Failed to negotiate caps video/x-raw, format=(string)BGRA, width=(int)640, height=(int)480, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)sRGB, framerate=(fraction)30/1
==== Error message start ====
0:00:14.235122000   700 0x18b8d2e0 DEBUG               GST_CAPS gstpad.c:2531:gboolean gst_pad_has_current_caps(GstPad *):<rtpsession0:send_rtcp_src> check current pad caps application/x-rtcp
Error in element source-1.
Error: Internal data flow error.
Debugging info: gstbasesrc.c(2943): void gst_base_src_loop(GstPad *) (): /GstPipeline:transport-agent-1/GstBin:source-bin-1/GstInterVideoSrc:source-1:
streaming task paused, reason not-negotiated (-4)
==== Error message stop ====
0:00:14.281985000   700 0x18b6a8e8 DEBUG               GST_CAPS gstpad.c:2531:gboolean gst_pad_has_current_caps(GstPad *):<video-source-capsfilter:sink> check current pad caps video/x-raw, width=(int)640, height=(int)480, format=(string)BGRA, framerate=(fraction)30/1
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:receive-input-bin-1/GstErDtlsSrtpDec:dtls_srtp_rtp_decoder_1/GstSrtpDec:srtp-decoder.GstPad:rtcp_src: caps = application/x-rtcp

(<unknown>:700): GStreamer-WARNING **: gstpad.c:4164:gst_pad_push_data:<rtpsession0:sync_src> Got data flow before stream-start event

(<unknown>:700): GStreamer-WARNING **: gstpad.c:4169:gst_pad_push_data:<rtpsession0:sync_src> Got data flow before segment event

(<unknown>:700): GStreamer-WARNING **: gstpad.c:3930:gst_pad_chain_data_unchecked:<rtpssrcdemux0:rtcp_sink> Got data flow before stream-start event

(<unknown>:700): GStreamer-WARNING **: gstpad.c:3935:gst_pad_chain_data_unchecked:<rtpssrcdemux0:rtcp_sink> Got data flow before segment event
0:00:14.286771000   700 0x18b6aa68 DEBUG               GST_CAPS gstpad.c:2531:gboolean gst_pad_has_current_caps(GstPad *):<source-output-capsfilter-0:sink> check current pad caps video/x-raw, format=(string)BGRA, width=(int)640, height=(int)480, framerate=(fraction)15/1

(<unknown>:700): GStreamer-WARNING **: gstpad.c:4164:gst_pad_push_data:<rtpssrcdemux0:rtcp_src_3252230191> Got data flow before stream-start event

(<unknown>:700): GStreamer-WARNING **: gstpad.c:4169:gst_pad_push_data:<rtpssrcdemux0:rtcp_src_3252230191> Got data flow before segment event
sdroege commented 9 years ago

Please update gst-plugins-good to latest git :) then the warnings should go away and maybe it will all work already. But will take a look at the log later, thanks!

stefanalund commented 9 years ago

I did, unless you changed anything the last couple of hours.

superdump commented 9 years ago

A GST_DEBUG log with GST_SCHEDULING:7 should show where/whether buffers are flowing.

sdroege commented 9 years ago

Yeah, the warnings are different than what I fixed. Another thing to look at :)

sdroege commented 9 years ago

The warnings can only happen if we receive RTCP packets interleaved with the RTP stream, and the first of those arrives before the first regular RTCP packet. Interleaving like in RFC5761. Trivial to fix but also not causing problems. Simple fix coming for that tomorrow.

sdroege commented 9 years ago

The error message here is (most likely) happening because the camera produces BGRA, vp8enc wants I420... and ercolorspace can't convert BGRA to I420, only the other way around. As a workaround for now we could add a capsfilter on iOS after the source to prefer I420, or we could switch to videoconvert, or implement BGRA->I420 in ercolorspace.

ijsf commented 9 years ago

FYI:

Spent some time integrating libyuv into Cerbero in my own openwebrtc fork, to see if it would be possible to use this as an alternative.

Unfortunately the libyuv build tools (and documentation) are in such a poor state that it's pulling in a lot of unnecessary and huge Chromium dependencies, making it practically impossible to depend on this library.

superdump commented 9 years ago

@sdroege can avfvideosrc deliver I420 in this case? Once upon a time we forced I420 just after source ! ercolorspace with the plan that glimagesink could handle I420 to RGBA or BGRA. That way colour space conversions could be avoided. However, that was with software codecs. The problem arose mostly because we normally set up the self view first.

sdroege commented 9 years ago

avfvideosrc could provide NV12, UYVY and YUY2 (and BGRA). We could force that with a capsfilter, yes.

emphilip commented 9 years ago

@sdroege @stefanalund I'm not sure if I've followed this correctly, but have you tested the forced capsfilter solution? Is this stable yet?

stefanalund commented 9 years ago

It has been removed from the pipeline and replaced with videoconvert that does not have this problem.

superdump commented 9 years ago

What does vtenc_h264 want? On iOS if that is available we should force that from the source then there should only be colourspace conversion in glimagesink.

If using openh264enc we should choose the colourspace from the source that converts fastest to I420. That should be NV12 on iOS then. I don't know about android, it probably varies...

superdump commented 9 years ago

@sdroege ^ how does that sound?

superdump commented 9 years ago

@emphilip: we haven't tested it recently but I think we will very soon.

sdroege commented 9 years ago

On vtenc wants NV12 or I420, openh264 wants I420. On Android it all depends on the hardware :)

superdump commented 9 years ago

iOS/OS X could force NV12 from avfvideosrc. Then I guess we can ideally have zerocopy through to vtenc/glimagesink. If OpenH264 has to be used (older than iPhone 5S?) then we can convert to I420 immediately after the source. We used to do this in an earlier OpenWebRTC pre-release.

Android and Linux would need more thought.

emphilip commented 9 years ago

So before going through the process of rebuilding the iOS libraries, can someone verify that the current build will work for iOS?

superdump commented 9 years ago

The current build does work but is not optimal. I am looking to verify some changes that should support reasonably well optimised processing (colour space conversion at least.) I intend to resolve that this Thursday.

emphilip commented 9 years ago

Thanks @superdump

I'm going to kick off the build and see if I can get it working on my device in the next couple hours

emphilip commented 9 years ago

@superdump Thanks! The build worked, and I updated Bowser to use the new framework. The remote video feed (of the iPhone) does appear on the PC Browser now, but the remote video feed from the PC Browser doesn't appear on the iPhone (Actually, no, ever 2 minutes a frame of the remote video feed flickers on the bowser app).

Is this the non-optimality you were talking about?

superdump commented 9 years ago

I think it's made worse by it, but I think that is also a bug which we're trying to fix with top priority.

emphilip commented 9 years ago

@superdump Well, at least the mobile video stream is coming through now. Is there an ETA on the fix? We need to go into Beta testing of our app, and then try to go into production, and this is the last component we need to wrap the application up.

Thanks again for your amazing support.

superdump commented 9 years ago

We're working to fix issues and optimise things the make the framework a good choice for use on mobile devices but it will take time to iron out all the kinks.

We have patches for the non-optimality in native apps (colour space conversion). It will take longer to press out all the performance on hardware pre-iPhone 5S, particularly as those don't support hardware H.264. Once things stabilize we will need to tweak the resolutions and frame rates used according to what the device can handle.

emphilip commented 9 years ago

@superdump Thank you for your quick reply.

I understand. All we need is the video working for post iPhone 5s devices to do our Beta release with our external testers. The framework is already an amazing choice, and doesn't limit us with our WebRTC server implementation.

Please let me know if I can assist with debugging through things with you. Once the remote video feed appears on our iPhone 6 devices, we can proceed with our testing.

Thanks again