basevideo: Add the caps to the GstVideoState and clean up caps/codec_data properly
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 27 Jun 2011 07:41:40 +0000 (09:41 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 6 Jul 2011 06:42:15 +0000 (08:42 +0200)
omx/gstbasevideocodec.c
omx/gstbasevideocodec.h
omx/gstbasevideodecoder.c

index 07085f7..0e229a8 100644 (file)
@@ -114,6 +114,9 @@ gst_base_video_codec_reset (GstBaseVideoCodec * base_video_codec)
 
   base_video_codec->bytes = 0;
   base_video_codec->time = 0;
+
+  gst_buffer_replace (&base_video_codec->state.codec_data, NULL);
+  gst_caps_replace (&base_video_codec->state.caps, NULL);
 }
 
 static void
index 9bada93..92dab47 100644 (file)
@@ -86,6 +86,7 @@ typedef struct _GstBaseVideoCodecClass GstBaseVideoCodecClass;
 
 struct _GstVideoState
 {
+  GstCaps *caps;
   GstVideoFormat format;
   int width, height;
   int fps_n, fps_d;
index aca8d5c..b1cb53e 100644 (file)
@@ -255,8 +255,12 @@ gst_base_video_decoder_sink_setcaps (GstPad * pad, GstCaps * caps)
 
   state = &GST_BASE_VIDEO_CODEC (base_video_decoder)->state;
 
+  gst_buffer_replace (&state->codec_data, NULL);
+  gst_caps_replace (&state->caps, NULL);
   memset (state, 0, sizeof (GstVideoState));
 
+  state->caps = gst_caps_ref (caps);
+
   structure = gst_caps_get_structure (caps, 0);
 
   gst_video_format_parse_caps (caps, NULL, &state->width, &state->height);