diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioencoder.c b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioencoder.c index f77216709b..5265993652 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioencoder.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioencoder.c @@ -1150,12 +1150,9 @@ gst_audio_encoder_push_buffers (GstAudioEncoder * enc, gboolean force) priv->got_data = FALSE; if (G_LIKELY (need)) { - const guint8 *data; - - data = gst_adapter_map (priv->adapter, priv->offset + need); - buf = - gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, - (gpointer) data, priv->offset + need, priv->offset, need, NULL, NULL); + buf = gst_adapter_get_buffer (priv->adapter, priv->offset + need); + buf = gst_buffer_make_writable (buf); + gst_buffer_resize (buf, priv->offset, -1); } else if (!priv->drainable) { GST_DEBUG_OBJECT (enc, "non-drainable and no more data"); goto finish; @@ -1182,7 +1179,6 @@ gst_audio_encoder_push_buffers (GstAudioEncoder * enc, gboolean force) if (G_LIKELY (buf)) { gst_buffer_unref (buf); - gst_adapter_unmap (priv->adapter); } finish: