[Spice-devel] [PATCH spice-gtk v3 3/6] display-gst: include capabilities for h264

Victor Toso victortoso at redhat.com
Tue May 16 14:48:15 UTC 2017


From: Victor Toso <me at victortoso.com>

As the comment states, incomplete GstCaps for h264 could trigger
errors in h264parse element, such as:

  gst_h264_parse_set_caps: video/x-h264 caps without
  codec_data or stream-format

This would make h264parse to ignore the capabilities that were set.

As spice-server is encoding as byte-stream it should be fine to set
this value here too.

Any other errors to h264 format should either be reported to
GStreamer or fixed by improving the spice-protocol.

The follow up patch will identify elements in GstRegistry based on
GstCaps so this is a necessary change to have.

This is also a preparatory patch to use Playbin element to create the
pipeline. Without this, Playbin or typefind will fail to recognize the
stream as H264.

Signed-off-by: Victor Toso <victortoso at redhat.com>
Signed-off-by: Victor Toso <me at victortoso.com>
---
 src/channel-display-gst.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
index 538e75a..73c2d25 100644
--- a/src/channel-display-gst.c
+++ b/src/channel-display-gst.c
@@ -68,10 +68,11 @@ static struct {
     { "vp8dec", "caps=video/x-vp8" },
 
     /* SPICE_VIDEO_CODEC_TYPE_H264
-     * h264 streams detection works fine and setting an incomplete cap
-     * causes errors. So let typefind do all the work.
+     * If setting video/x-h264, h264parse will complain if we don't have the
+     * stream-format or codec_data information. As stream-format is byte-stream
+     * (hardcodec in spice-server), let add it to avoid the warning.
      */
-    { "h264parse ! avdec_h264", "" },
+    { "h264parse ! avdec_h264", "caps=video/x-h264,stream-format=byte-stream" },
 
     /* SPICE_VIDEO_CODEC_TYPE_VP9 */
     { "vp9dec", "caps=video/x-vp9" },
-- 
2.13.0



More information about the Spice-devel mailing list