ffdec: propose some padding in the allocation query
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 14 Mar 2012 19:04:53 +0000 (20:04 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 14 Mar 2012 19:04:53 +0000 (20:04 +0100)
Hopefully upstream can add some padding and then we don't have to memcpy.

ext/ffmpeg/gstffmpegdec.c

index 84be7c94570f096889c518ebff4d22f04ff1afc3..60b0fb5141d264a69ae4c5687a3148a7bfed3840 100644 (file)
@@ -1440,8 +1440,8 @@ gst_ffmpegdec_audio_negotiate (GstFFMpegDec * ffmpegdec, gboolean force)
   memcpy (ffmpegdec->format.audio.gst_layout,
       ffmpegdec->format.audio.ffmpeg_layout,
       sizeof (GstAudioChannelPosition) * ffmpegdec->format.audio.channels);
-  gst_audio_channel_positions_to_valid_order (ffmpegdec->format.
-      audio.gst_layout, ffmpegdec->format.audio.channels);
+  gst_audio_channel_positions_to_valid_order (ffmpegdec->format.audio.
+      gst_layout, ffmpegdec->format.audio.channels);
 
   GST_LOG_OBJECT (ffmpegdec, "output caps %" GST_PTR_FORMAT, caps);
 
@@ -2720,6 +2720,14 @@ gst_ffmpegdec_sink_query (GstPad * pad, GstObject * parent, GstQuery * query)
       }
       break;
     }
+    case GST_QUERY_ALLOCATION:
+      /* we would like to have some padding so that we don't have to memcpy,
+       * since we have variable sized input, set size to 0, min/max buffers and
+       * a pool are not useful for us. */
+      gst_query_set_allocation_params (query, 0, 0, 0, 0,
+          FF_INPUT_BUFFER_PADDING_SIZE, 0, NULL);
+      ret = TRUE;
+      break;
     default:
       ret = gst_pad_query_default (pad, parent, query);
       break;