diff --git a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.cpp b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.cpp index f205fd23ab..6d3f604644 100644 --- a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.cpp +++ b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.cpp @@ -1558,7 +1558,7 @@ gst_decklink2_output_schedule_video_internal (GstDeckLink2Output * self, HRESULT gst_decklink2_output_schedule_stream (GstDeckLink2Output * output, IDeckLinkVideoFrame * frame, guint8 * audio_buf, gsize audio_buf_size, - GstDecklink2OutputStats *stats) + GstDecklink2OutputStats * stats) { GstDeckLink2OutputPrivate *priv = output->priv; HRESULT hr; @@ -1597,6 +1597,13 @@ gst_decklink2_output_schedule_stream (GstDeckLink2Output * output, stats->buffered_audio = buffered_audio; stats->video_running_time = video_running_time; stats->audio_running_time = audio_running_time; + stats->buffered_video_time = gst_util_uint64_scale (buffered_video, + output->selected_mode.fps_d * GST_SECOND, output->selected_mode.fps_n); + stats->buffered_audio_time = 0; + if (GST_AUDIO_INFO_IS_VALID (&output->audio_info)) { + stats->buffered_audio_time = gst_util_uint64_scale (buffered_audio, + GST_SECOND, output->audio_info.rate); + } stats->hw_time = hw_time_gst; stats->scheduled_video_frames = output->n_frames; stats->scheduled_audio_samples = output->n_samples; diff --git a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.h b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.h index 3e349f82b9..f2e8eecc4e 100644 --- a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.h +++ b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2output.h @@ -36,6 +36,8 @@ typedef struct GstClockTime video_running_time; GstClockTime audio_running_time; GstClockTime hw_time; + GstClockTime buffered_video_time; + GstClockTime buffered_audio_time; guint64 scheduled_video_frames; guint64 scheduled_audio_samples; guint64 late_count; diff --git a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2sink.cpp b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2sink.cpp index 7e787494fe..7e6c9ef04b 100644 --- a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2sink.cpp +++ b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2sink.cpp @@ -470,19 +470,21 @@ gst_decklink2_sink_get_property (GObject * object, guint prop_id, s = gst_structure_new ("output-stats", "buffered-video", G_TYPE_UINT, stats->buffered_video, "buffered-audio", G_TYPE_UINT, stats->buffered_audio, + "buffered-video-time", G_TYPE_UINT64, stats->buffered_video_time, + "buffered-audio-time", G_TYPE_UINT64, stats->buffered_audio_time, "video-running-time", G_TYPE_UINT64, stats->video_running_time, "audio-running-time", G_TYPE_UINT64, stats->audio_running_time, "hardware-time", G_TYPE_UINT64, stats->hw_time, - "scheduled-video-frames", G_TYPE_UINT64, stats->scheduled_video_frames, - "scheduled-audio-samples", G_TYPE_UINT64, stats->scheduled_audio_samples, - "dropped-frames", G_TYPE_UINT64, stats->drop_count, - "dropped-samples", G_TYPE_UINT64, stats->dropped_sample_count, - "late-count", G_TYPE_UINT64, stats->late_count, - "overrun-count", G_TYPE_UINT64, stats->overrun_count, - "underrun-count", G_TYPE_UINT64, stats->underrun_count, - "duplicated-frames", G_TYPE_UINT64, stats->duplicate_count, - "silent-samples", G_TYPE_UINT64, stats->silent_sample_count, - NULL); + "scheduled-video-frames", G_TYPE_UINT64, + stats->scheduled_video_frames, "scheduled-audio-samples", + G_TYPE_UINT64, stats->scheduled_audio_samples, "dropped-frames", + G_TYPE_UINT64, stats->drop_count, "dropped-samples", G_TYPE_UINT64, + stats->dropped_sample_count, "late-count", G_TYPE_UINT64, + stats->late_count, "overrun-count", G_TYPE_UINT64, + stats->overrun_count, "underrun-count", G_TYPE_UINT64, + stats->underrun_count, "duplicated-frames", G_TYPE_UINT64, + stats->duplicate_count, "silent-samples", G_TYPE_UINT64, + stats->silent_sample_count, NULL); g_value_take_boxed (value, s); break;