summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jsteffens@make.tv>2019-02-13 16:09:45 +0100
committerJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2019-05-16 19:11:55 +0200
commitbeb88d94b5ae4a196e0b9b9f74111ee24414170d (patch)
treeb653e777a17742b18c7a14728a34c75adfbced15
parentaa80d70aaaf5a1e1b0c271a17b041d0a50376a9d (diff)
downloadgstreamer-plugins-bad-beb88d94b5ae4a196e0b9b9f74111ee24414170d.tar.gz
fdkaacenc: Fix draining with libfdk-aac v2.0.0
This release requires all buffer descriptor pointers to be valid, even when we provide zero input buffers.
-rw-r--r--ext/fdkaac/gstfdkaacenc.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/ext/fdkaac/gstfdkaacenc.c b/ext/fdkaac/gstfdkaacenc.c
index 8410e684c..5a0556e03 100644
--- a/ext/fdkaac/gstfdkaacenc.c
+++ b/ext/fdkaac/gstfdkaacenc.c
@@ -486,9 +486,7 @@ gst_fdkaacenc_handle_frame (GstAudioEncoder * enc, GstBuffer * inbuf)
info = gst_audio_encoder_get_audio_info (enc);
- if (!inbuf) {
- in_args.numInSamples = -1;
- } else {
+ if (inbuf) {
if (self->need_reorder) {
inbuf = gst_buffer_copy (inbuf);
gst_buffer_map (inbuf, &imap, GST_MAP_READWRITE);
@@ -502,14 +500,21 @@ gst_fdkaacenc_handle_frame (GstAudioEncoder * enc, GstBuffer * inbuf)
in_args.numInSamples = imap.size / GST_AUDIO_INFO_BPS (info);
in_sizes = imap.size;
- in_el_sizes = 2;
- in_desc.bufferIdentifiers = &in_id;
+ in_el_sizes = GST_AUDIO_INFO_BPS (info);
in_desc.numBufs = 1;
- in_desc.bufs = (void *) &imap.data;
- in_desc.bufSizes = &in_sizes;
- in_desc.bufElSizes = &in_el_sizes;
+ } else {
+ in_args.numInSamples = -1;
+
+ in_sizes = 0;
+ in_el_sizes = 0;
+ in_desc.numBufs = 0;
}
+ in_desc.bufferIdentifiers = &in_id;
+ in_desc.bufs = (void *) &imap.data;
+ in_desc.bufSizes = &in_sizes;
+ in_desc.bufElSizes = &in_el_sizes;
+
outbuf = gst_audio_encoder_allocate_output_buffer (enc, self->outbuf_size);
if (!outbuf) {
ret = GST_FLOW_ERROR;