decklink2sink: Add buffered audio and video time to ouptput-stats

This commit is contained in:
Seungha Yang 2023-07-29 00:01:57 +09:00
parent e6fecabe8e
commit 8f1855118f
3 changed files with 22 additions and 11 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;