From: Sebastian Dröge Date: Mon, 27 Jun 2011 07:41:40 +0000 (+0200) Subject: basevideo: Add the caps to the GstVideoState and clean up caps/codec_data properly X-Git-Tag: RELEASE-0.11.1~272^2~108 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=525875727aa91998c238fc13fe4477b60527741b;p=platform%2Fupstream%2Fgst-plugins-bad.git basevideo: Add the caps to the GstVideoState and clean up caps/codec_data properly Having access to the caps in ::set_format can be useful if non-standard caps fields like the h264 alignment must be accessed. --- diff --git a/gst-libs/gst/video/gstbasevideocodec.c b/gst-libs/gst/video/gstbasevideocodec.c index f2d4ee6ca..c605b39bf 100644 --- a/gst-libs/gst/video/gstbasevideocodec.c +++ b/gst-libs/gst/video/gstbasevideocodec.c @@ -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 diff --git a/gst-libs/gst/video/gstbasevideocodec.h b/gst-libs/gst/video/gstbasevideocodec.h index e9431e20a..2fa6015d9 100644 --- a/gst-libs/gst/video/gstbasevideocodec.h +++ b/gst-libs/gst/video/gstbasevideocodec.h @@ -86,6 +86,7 @@ typedef struct _GstBaseVideoCodecClass GstBaseVideoCodecClass; struct _GstVideoState { + GstCaps *caps; GstVideoFormat format; int width, height; int fps_n, fps_d; diff --git a/gst-libs/gst/video/gstbasevideodecoder.c b/gst-libs/gst/video/gstbasevideodecoder.c index 81c84beb9..4f1e8e155 100644 --- a/gst-libs/gst/video/gstbasevideodecoder.c +++ b/gst-libs/gst/video/gstbasevideodecoder.c @@ -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);