basevideocodec: Reset should reset current caps
authorThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 30 Dec 2011 03:02:46 +0000 (00:02 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 30 Dec 2011 03:02:46 +0000 (00:02 -0300)
New caps will need to be negotiated when reset happens
(PAUSED to READY). Without reseting the internal
stored format, basevideoencoder/decoder wouldn't call the
configuration function when the same caps was negotiated
again as they would believe this was the same caps as before.

The issue is that _stop has been called when going to READY and
the elements would have reset their internal codec libs/state as
well. A new configuration should be done.

gst-libs/gst/video/gstbasevideocodec.c

index a1dc91db46936e7d148db144a1160311e7cb8cfe..9c130ed5e3cf21dc1542c66e81acdaf95b7f1482 100644 (file)
@@ -134,6 +134,8 @@ gst_base_video_codec_reset (GstBaseVideoCodec * base_video_codec)
 
   gst_buffer_replace (&base_video_codec->state.codec_data, NULL);
   gst_caps_replace (&base_video_codec->state.caps, NULL);
+  memset (&base_video_codec->state, 0, sizeof (GstVideoState));
+  base_video_codec->state.format = GST_VIDEO_FORMAT_UNKNOWN;
   GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_codec);
 }