diff --git a/ext/dirac/gstdiracenc.cc b/ext/dirac/gstdiracenc.cc index 3a112cdf13..f9122ee2fc 100644 --- a/ext/dirac/gstdiracenc.cc +++ b/ext/dirac/gstdiracenc.cc @@ -421,6 +421,10 @@ gst_dirac_enc_set_format (GstBaseVideoEncoder * base_video_encoder, dirac_enc->enc_ctx.decode_flag = 0; dirac_enc->enc_ctx.instr_flag = 0; + dirac_enc->granule_offset = ~0; + + dirac_enc->encoder = dirac_encoder_init (&dirac_enc->enc_ctx, FALSE); + return TRUE; } @@ -821,12 +825,6 @@ error: static gboolean gst_dirac_enc_start (GstBaseVideoEncoder * base_video_encoder) { - GstDiracEnc *dirac_enc = GST_DIRAC_ENC (base_video_encoder); - - dirac_enc->granule_offset = ~0; - - dirac_enc->encoder = dirac_encoder_init (&dirac_enc->enc_ctx, FALSE); - return TRUE; } diff --git a/ext/schroedinger/gstschroenc.c b/ext/schroedinger/gstschroenc.c index e8fabd1d14..16a3af95a2 100644 --- a/ext/schroedinger/gstschroenc.c +++ b/ext/schroedinger/gstschroenc.c @@ -338,6 +338,8 @@ gst_schro_enc_set_format (GstBaseVideoEncoder * base_video_encoder, gst_schro_wrap_schro_buffer (schro_encoder_encode_sequence_header (schro_enc->encoder)); + schro_enc->granule_offset = ~0; + return TRUE; } @@ -413,10 +415,6 @@ gst_schro_enc_get_property (GObject * object, guint prop_id, GValue * value, static gboolean gst_schro_enc_start (GstBaseVideoEncoder * base_video_encoder) { - GstSchroEnc *schro_enc = GST_SCHRO_ENC (base_video_encoder); - - schro_enc->granule_offset = ~0; - return TRUE; } diff --git a/gst-libs/gst/video/gstbasevideoencoder.c b/gst-libs/gst/video/gstbasevideoencoder.c index ede69510af..9fd8f36378 100644 --- a/gst-libs/gst/video/gstbasevideoencoder.c +++ b/gst-libs/gst/video/gstbasevideoencoder.c @@ -164,9 +164,6 @@ gst_base_video_encoder_sink_setcaps (GstPad * pad, GstCaps * caps) ret = base_video_encoder_class->set_format (base_video_encoder, &GST_BASE_VIDEO_CODEC (base_video_encoder)->state); - if (ret) { - ret = base_video_encoder_class->start (base_video_encoder); - } g_object_unref (base_video_encoder); @@ -489,6 +486,10 @@ gst_base_video_encoder_change_state (GstElement * element, switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: gst_base_video_encoder_reset (base_video_encoder); + gst_base_video_encoder_reset (base_video_encoder); + if (base_video_encoder_class->start) { + base_video_encoder_class->start (base_video_encoder); + } break; default: break;