diff options
author | Jeongki Kim <jeongki.kim@jeongki.kim> | 2021-02-22 15:36:53 +0900 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2021-02-24 18:55:05 +0000 |
commit | 1806ddd6cf559f187865728987da294e84bfabf5 (patch) | |
tree | fd44feb01258c910879af7f15563e1f71ebe6c46 | |
parent | 788b00419aa749812410af8d7eeccc8d398b8abd (diff) | |
download | gstreamer-plugins-base-1806ddd6cf559f187865728987da294e84bfabf5.tar.gz |
audioresample: Respect buffer layout when drain
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1050>
-rw-r--r-- | gst/audioresample/gstaudioresample.c | 17 |
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 |