[Spice-devel] [PATCH 1/2] Update comments in spice-gtk regards GstVideoOverlay

Snir Sheriber ssheribe at redhat.com
Thu Jul 5 15:08:02 UTC 2018


---
Hopfully it's clear to understand the separation i did here without
re-numbering:/
---
 src/channel-display-gst.c | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
index ff0ecd8..1ccc788 100644
--- a/src/channel-display-gst.c
+++ b/src/channel-display-gst.c
@@ -570,20 +570,27 @@ static void spice_gst_decoder_destroy(VideoDecoder *video_decoder)
  *    decoding.
  * 3) As soon as the GStreamer pipeline no longer needs the compressed frame it
  *    will call frame->unref_data() to free it.
- * 4) Once the decompressed frame is available the GStreamer pipeline calls
- *    new_sample() in the GStreamer thread.
- * 5) new_sample() then matches the decompressed frame to a SpiceGstFrame from
- *    the decoding queue using the GStreamer timestamp information to deal with
- *    dropped frames. The SpiceGstFrame is popped from the decoding_queue.
- * 6) new_sample() then attaches the decompressed frame to the SpiceGstFrame,
- *    set into display_frame and calls schedule_frame().
- * 7) schedule_frame() then uses gstframe->frame->mm_time to arrange for
- *    display_frame() to be called, in the main thread, at the right time for
- *    the next frame.
- * 8) display_frame() use SpiceGstFrame from display_frame and
- *    calls stream_display_frame().
- * 9) display_frame() then frees the SpiceGstFrame, which frees the SpiceFrame
- *    and decompressed frame with it.
+ *
+ * If GstVideoOverlay is used (win_handle was obtained by pipeline creation):
+ *   4) Decompressed frames will be renderd to widget directly from gstreamer's pipeline
+ *      using some gstreamer sink plugin which implements the GstVideoOverlay interface
+ *      (last step).
+ *
+ * Otherwise appsink is used:
+ *   4) Once the decompressed frame is available the GStreamer pipeline calls
+ *      new_sample() in the GStreamer thread.
+ *   5) new_sample() then matches the decompressed frame to a SpiceGstFrame from
+ *      the decoding queue using the GStreamer timestamp information to deal with
+ *      dropped frames. The SpiceGstFrame is popped from the decoding_queue.
+ *   6) new_sample() then attaches the decompressed frame to the SpiceGstFrame,
+ *      set into display_frame and calls schedule_frame().
+ *   7) schedule_frame() then uses gstframe->frame->mm_time to arrange for
+ *      display_frame() to be called, in the main thread, at the right time for
+ *      the next frame.
+ *   8) display_frame() use SpiceGstFrame from display_frame and
+ *      calls stream_display_frame().
+ *   9) display_frame() then frees the SpiceGstFrame, which frees the SpiceFrame
+ *      and decompressed frame with it.
  */
 static gboolean spice_gst_decoder_queue_frame(VideoDecoder *video_decoder,
                                               SpiceFrame *frame, int latency)
-- 
2.17.0



More information about the Spice-devel mailing list