summaryrefslogtreecommitdiff
path: root/gst/audioresample
diff options
context:
space:
mode:
authorJeongki Kim <jeongki.kim@jeongki.kim>2021-02-22 15:36:53 +0900
committerJeongki Kim <jeongki.kim@jeongki.kim>2021-02-22 15:36:53 +0900
commitfd41fca7f3263880a0c9a014541c5a98960ed1cb (patch)
tree45ab1c614f5e1fbe2f8f778e1fb52f785d553fe1 /gst/audioresample
parentebad39b8657ed9138f0b2ed5bb98b4a50de209d6 (diff)
downloadgstreamer-plugins-base-fd41fca7f3263880a0c9a014541c5a98960ed1cb.tar.gz
audioresample: Respect buffer layout when drain
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1045>
Diffstat (limited to 'gst/audioresample')
-rw-r--r--gst/audioresample/gstaudioresample.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/gst/audioresample/gstaudioresample.c b/gst/audioresample/gstaudioresample.c
index cd9e329fd..3b3571861 100644
--- a/gst/audioresample/gstaudioresample.c
+++ b/gst/audioresample/gstaudioresample.c
@@ -557,7 +557,8 @@ static void
gst_audio_resample_dump_drain (GstAudioResample * resample, guint history_len)
{
gsize out_len, outsize;
- gpointer out[1];
+ GstBuffer *outbuf;
+ GstAudioBuffer abuf;
out_len =
gst_audio_converter_get_out_frames (resample->converter, history_len);
@@ -565,11 +566,19 @@ gst_audio_resample_dump_drain (GstAudioResample * resample, guint history_len)
return;
outsize = out_len * resample->out.bpf;
+ outbuf = gst_buffer_new_and_alloc (outsize);
+
+ if (GST_AUDIO_INFO_LAYOUT (&resample->out) ==
+ GST_AUDIO_LAYOUT_NON_INTERLEAVED) {
+ gst_buffer_add_audio_meta (outbuf, &resample->out, out_len, NULL);
+ }
- out[0] = g_malloc (outsize);
+ gst_audio_buffer_map (&abuf, &resample->out, outbuf, GST_MAP_WRITE);
gst_audio_converter_samples (resample->converter, 0, NULL, history_len,
- out, out_len);
- g_free (out[0]);
+ abuf.planes, out_len);
+ gst_audio_buffer_unmap (&abuf);
+
+ gst_buffer_unref (outbuf);
}
static void