vp8dec: Use outputstate when copying output buffer data
authorThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 27 Apr 2012 12:05:57 +0000 (09:05 -0300)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 28 May 2012 13:29:13 +0000 (15:29 +0200)
Using the input state was causing a crash because the strides/offsets
would be wrong. Fix it by using the output as we are dealing with
the decoded frame.

ext/vp8/gstvp8dec.c

index 71683c1781fdca120e7f7a1e557c6c3140e5f4e2..724e6e15e39e1d729a76ae8fc152476bd305d529 100644 (file)
@@ -326,7 +326,11 @@ gst_vp8_dec_image_to_buffer (GstVP8Dec * dec, const vpx_image_t * img,
 {
   int stride, w, h, i;
   guint8 *d;
-  GstVideoInfo *info = &dec->input_state->info;
+  GstVideoCodecState *outputstate;
+  GstVideoInfo *info;
+
+  outputstate = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (dec));
+  info = &outputstate->info;
 
   d = GST_BUFFER_DATA (buffer) + GST_VIDEO_INFO_COMP_OFFSET (info, 0);
   stride = GST_VIDEO_INFO_COMP_STRIDE (info, 0);
@@ -354,6 +358,8 @@ gst_vp8_dec_image_to_buffer (GstVP8Dec * dec, const vpx_image_t * img,
   for (i = 0; i < h; i++)
     memcpy (d + i * stride,
         img->planes[VPX_PLANE_V] + i * img->stride[VPX_PLANE_V], w);
+
+  gst_video_codec_state_unref (outputstate);
 }
 
 static GstFlowReturn