diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.c b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.c index 96a409c280..fb81a01f16 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.c +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.c @@ -220,24 +220,6 @@ profile_to_string (gint profile) return NULL; } -static void -gst_msdkav1enc_set_timestamp (GstMsdkEnc * encoder, mfxU64 timestamp) -{ - GstMsdkAV1Enc *thiz = GST_MSDKAV1ENC (encoder); - - g_queue_push_tail (thiz->timestamp, (gpointer) timestamp); -} - -static mfxU64 -gst_msdkav1enc_get_timestamp (GstMsdkEnc * encoder) -{ - GstMsdkAV1Enc *thiz = GST_MSDKAV1ENC (encoder); - mfxU64 pts; - - pts = (mfxU64) g_queue_pop_head (thiz->timestamp); - return pts; -} - static gint gst_msdkav1enc_find_show_frame (GstMsdkAV1Enc * thiz, guint8 * data, gsize size, gsize * offset) @@ -320,7 +302,6 @@ gst_msdkav1enc_flush_frames (GstMsdkEnc * encoder) { GstVideoCodecFrame *frame; GstBuffer *out_buf = NULL; - mfxU64 pts; while (1) { if (!gst_msdkav1enc_pre_finish (encoder, &out_buf, NULL, 0)) @@ -329,8 +310,6 @@ gst_msdkav1enc_flush_frames (GstMsdkEnc * encoder) break; frame = gst_video_encoder_get_oldest_frame (GST_VIDEO_ENCODER (encoder)); frame->output_buffer = out_buf; - pts = gst_msdkav1enc_get_timestamp (encoder); - frame->pts = gst_util_uint64_scale (pts, GST_SECOND, 90000); gst_video_codec_frame_unref (frame); gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (encoder), frame); } @@ -461,8 +440,6 @@ gst_msdkav1enc_class_init (GstMsdkAV1EncClass * klass) encoder_class->qp_min = 0; encoder_class->pre_finish = gst_msdkav1enc_pre_finish; encoder_class->flush_frames = gst_msdkav1enc_flush_frames; - encoder_class->set_timestamp = gst_msdkav1enc_set_timestamp; - encoder_class->get_timestamp = gst_msdkav1enc_get_timestamp; gst_msdkenc_install_common_properties (encoder_class); @@ -508,5 +485,4 @@ gst_msdkav1enc_init (GstMsdkAV1Enc * thiz) thiz->p_pyramid = PROP_P_PYRAMID_DEFAULT; thiz->adapter = gst_adapter_new (); thiz->parser = gst_av1_parser_new (); - thiz->timestamp = g_queue_new (); } diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.h b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.h index 22c80d9348..7e3ab7d8bb 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.h +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkav1enc.h @@ -67,7 +67,6 @@ struct _GstMsdkAV1Enc GstAdapter *adapter; GstAV1Parser *parser; - GQueue *timestamp; }; struct _GstMsdkAV1EncClass diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c index 373d3424da..3070ea2575 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.c @@ -1070,7 +1070,6 @@ gst_msdkenc_finish_frame (GstMsdkEnc * thiz, MsdkEncTask * task, GstMsdkEncClass *klass = GST_MSDKENC_GET_CLASS (thiz); GstVideoCodecFrame *frame; GList *list; - mfxU64 pts; if (!task->sync_point) return GST_FLOW_OK; @@ -1116,18 +1115,9 @@ gst_msdkenc_finish_frame (GstMsdkEnc * thiz, MsdkEncTask * task, } frame->output_buffer = out_buf; - /* This is a workaround for output pts, because oneVPL cannot return the - * correct pts for each display frame. We just use the input frame's pts - * as output ones as oneVPL return each coded frames as display. - */ - if (klass->get_timestamp) { - pts = klass->get_timestamp (thiz); - frame->pts = gst_util_uint64_scale (pts, GST_SECOND, 90000); - } else { - frame->pts = - gst_util_uint64_scale (task->output_bitstream.TimeStamp, GST_SECOND, - 90000); - } + frame->pts = + gst_util_uint64_scale (task->output_bitstream.TimeStamp, GST_SECOND, + 90000); frame->dts = gst_util_uint64_scale (task->output_bitstream.DecodeTimeStamp, GST_SECOND, 90000); @@ -1775,9 +1765,6 @@ gst_msdkenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame) if (frame->pts != GST_CLOCK_TIME_NONE) { surface->surface->Data.TimeStamp = gst_util_uint64_scale (frame->pts, 90000, GST_SECOND); - - if (klass->set_timestamp) - klass->set_timestamp (thiz, surface->surface->Data.TimeStamp); } else { surface->surface->Data.TimeStamp = MFX_TIMESTAMP_UNKNOWN; } diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h index 705a6b0fb6..2f1d59e6bc 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkenc.h @@ -198,10 +198,6 @@ struct _GstMsdkEncClass guint8 *data, gsize size); void (*flush_frames) (GstMsdkEnc * encoder); - void (*set_timestamp) (GstMsdkEnc * encoder, mfxU64 pts); - - mfxU64 (*get_timestamp) (GstMsdkEnc * encoder); - guint qp_max; guint qp_min; };