theoradec: Add crop metadata before mapping the buffer content
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 30 Mar 2012 11:52:56 +0000 (13:52 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 30 Mar 2012 11:52:56 +0000 (13:52 +0200)
Otherwise the buffer is not writable and the crop metadata can't be added.

ext/theora/gsttheoradec.c

index 8a4279f..ed44141 100644 (file)
@@ -1132,10 +1132,6 @@ theora_handle_image (GstTheoraDec * dec, th_ycbcr_buffer buf, GstBuffer ** out)
   if (G_UNLIKELY (result != GST_FLOW_OK))
     goto no_buffer;
 
-  if G_UNLIKELY
-    (!gst_video_frame_map (&frame, &dec->vinfo, *out, GST_MAP_WRITE))
-        goto invalid_frame;
-
   if (!dec->has_cropping) {
     /* we need to crop the hard way */
     offset_x = dec->info.pic_x;
@@ -1171,6 +1167,10 @@ theora_handle_image (GstTheoraDec * dec, th_ycbcr_buffer buf, GstBuffer ** out)
   GST_CAT_TRACE_OBJECT (GST_CAT_PERFORMANCE, dec,
       "doing unavoidable video frame copy");
 
+  if G_UNLIKELY
+    (!gst_video_frame_map (&frame, &dec->vinfo, *out, GST_MAP_WRITE))
+        goto invalid_frame;
+
   for (comp = 0; comp < 3; comp++) {
     width =
         GST_VIDEO_FORMAT_INFO_SCALE_WIDTH (frame.info.finfo, comp, pic_width);