videoencoder: Reset internal state and segments on FLUSH_STOP
authorSebastian Dröge <slomo@circular-chaos.org>
Thu, 25 Jul 2013 08:46:04 +0000 (10:46 +0200)
committerSebastian Dröge <slomo@circular-chaos.org>
Thu, 25 Jul 2013 08:46:04 +0000 (10:46 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=656007

gst-libs/gst/video/gstvideoencoder.c

index 97e0ba1..006175d 100644 (file)
@@ -1018,6 +1018,14 @@ gst_video_encoder_sink_event_default (GstVideoEncoder * encoder,
       }
       break;
     }
+    case GST_EVENT_FLUSH_STOP:{
+      GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
+      gst_segment_init (&encoder->input_segment, GST_FORMAT_TIME);
+      gst_segment_init (&encoder->output_segment, GST_FORMAT_TIME);
+      gst_video_encoder_reset (encoder, FALSE);
+      GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
+      break;
+    }
     default:
       break;
   }