diff --git a/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c b/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c
index 7775be2d9a..5e5b8c57ec 100644
--- a/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c
+++ b/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.c
@@ -59,7 +59,7 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GstVaBaseEnc, gst_va_base_enc,
 /* *INDENT-ON* */
 
 static void
-gst_va_base_enc_reset_state (GstVaBaseEnc * base)
+gst_va_base_enc_reset_state_default (GstVaBaseEnc * base)
 {
   GstVaBaseEncClass *klass = GST_VA_BASE_ENC_GET_CLASS (base);
 
@@ -119,9 +119,8 @@ static gboolean
 gst_va_base_enc_start (GstVideoEncoder * venc)
 {
   GstVaBaseEnc *base = GST_VA_BASE_ENC (venc);
-  GstVaBaseEncClass *klass = GST_VA_BASE_ENC_GET_CLASS (base);
 
-  klass->reset_state (base);
+  gst_va_base_enc_reset_state (base);
 
   base->input_frame_count = 0;
   base->output_frame_count = 0;
@@ -902,7 +901,7 @@ gst_va_base_enc_class_init (GstVaBaseEncClass * klass)
   encoder_class->finish = GST_DEBUG_FUNCPTR (gst_va_base_enc_finish);
   encoder_class->flush = GST_DEBUG_FUNCPTR (gst_va_base_enc_flush);
 
-  klass->reset_state = GST_DEBUG_FUNCPTR (gst_va_base_enc_reset_state);
+  klass->reset_state = GST_DEBUG_FUNCPTR (gst_va_base_enc_reset_state_default);
 
   properties[PROP_DEVICE_PATH] = g_param_spec_string ("device-path",
       "Device Path", "DRM device path", NULL,
@@ -1101,6 +1100,15 @@ gst_va_base_enc_add_codec_tag (GstVaBaseEnc * base, const gchar * codec_name)
   gst_tag_list_unref (tags);
 }
 
+void
+gst_va_base_enc_reset_state (GstVaBaseEnc * base)
+{
+  GstVaBaseEncClass *klass = GST_VA_BASE_ENC_GET_CLASS (base);
+
+  g_assert (klass->reset_state);
+  klass->reset_state (base);
+}
+
 /* *INDENT-OFF* */
 #define UPDATE_PROPERTY                         \
   GST_OBJECT_LOCK (base);                       \
diff --git a/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.h b/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.h
index b6aa03337a..67ff3018ed 100644
--- a/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.h
+++ b/subprojects/gst-plugins-bad/sys/va/gstvabaseenc.h
@@ -128,6 +128,7 @@ gboolean              gst_va_base_enc_add_trellis_parameter (GstVaBaseEnc * base
                                                              gboolean use_trellis);
 void                  gst_va_base_enc_add_codec_tag       (GstVaBaseEnc * base,
                                                            const gchar * codec_name);
+void                  gst_va_base_enc_reset_state         (GstVaBaseEnc * base);
 
 void                  gst_va_base_enc_update_property_uint (GstVaBaseEnc * base,
                                                             guint32 * old_val,
diff --git a/subprojects/gst-plugins-bad/sys/va/gstvah264enc.c b/subprojects/gst-plugins-bad/sys/va/gstvah264enc.c
index 72b7e5fb00..60c3fd175c 100644
--- a/subprojects/gst-plugins-bad/sys/va/gstvah264enc.c
+++ b/subprojects/gst-plugins-bad/sys/va/gstvah264enc.c
@@ -1517,7 +1517,7 @@ gst_va_h264_enc_reconfig (GstVaBaseEnc * base)
   guint max_ref_frames;
   GstVideoCodecState *output_state;
 
-  gst_va_h264_enc_reset_state (base);
+  gst_va_base_enc_reset_state (base);
 
   base->width = GST_VIDEO_INFO_WIDTH (&base->input_state->info);
   base->height = GST_VIDEO_INFO_HEIGHT (&base->input_state->info);