[Spice-devel] [client v2 04/12] gstreamer: Add the encoded frame's order the statistics
Frediano Ziglio
fziglio at redhat.com
Tue Jun 18 07:07:30 UTC 2019
>
> The number of frames that were sitting in the decoding_queue before the
> current frame was added is crucial to correctly interpret the decoding
> time:
> * Less than MAX_DECODED_FRAMES means nothing blocked the decoding of
> that frame.
> * More than MAX_DECODED_FRAMES means decoding was delayed by one or more
> frame intervals.
>
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Acked
> ---
>
> v2: Renamed rank to queue_len.
> Moved it to the last position in the statistics string.
>
> src/channel-display-gst.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> index c2b24ea7..449b9cb8 100644
> --- a/src/channel-display-gst.c
> +++ b/src/channel-display-gst.c
> @@ -90,6 +90,7 @@ struct SpiceGstFrame {
> GstBuffer *encoded_buffer;
> SpiceFrame *encoded_frame;
> GstSample *decoded_sample;
> + guint queue_len;
> };
>
> static SpiceGstFrame *create_gst_frame(GstBuffer *buffer, SpiceFrame *frame)
> @@ -440,11 +441,18 @@ sink_event_probe(GstPad *pad, GstPadProbeInfo *info,
> gpointer data)
> SpiceGstFrame *gstframe = l->data;
> const SpiceFrame *frame = gstframe->encoded_frame;
> int64_t duration = g_get_monotonic_time() -
> frame->creation_time;
> + /* Note that queue_len (the length of the queue prior to adding
> + * this frame) is crucial to correctly interpret the decoding
> time:
> + * - Less than MAX_DECODED_FRAMES means nothing blocked the
> + * decoding of that frame.
> + * - More than MAX_DECODED_FRAMES means decoding was delayed by
> one
> + * or more frame intervals.
> + */
> record(frames_stats,
> "frame mm_time %u size %u creation time %" PRId64
> - " decoded time %" PRId64 " queue %u",
> + " decoded time %" PRId64 " queue %u before %u",
> frame->mm_time, frame->size, frame->creation_time,
> duration,
> - decoder->decoding_queue->length);
> + decoder->decoding_queue->length, gstframe->queue_len);
>
> if (!decoder->appsink) {
> /* The sink will display the frame directly so this
> @@ -729,6 +737,7 @@ static gboolean
> spice_gst_decoder_queue_frame(VideoDecoder *video_decoder,
>
> SpiceGstFrame *gst_frame = create_gst_frame(buffer, frame);
> g_mutex_lock(&decoder->queues_mutex);
> + gst_frame->queue_len = decoder->decoding_queue->length;
> g_queue_push_tail(decoder->decoding_queue, gst_frame);
> g_mutex_unlock(&decoder->queues_mutex);
>
More information about the Spice-devel
mailing list