GNOME Bugzilla – Bug 741783
qtmux: crash when trying to mux ALAC
Last modified: 2015-03-04 16:25:24 UTC
I'm trying to encode with ALAC codec, I think the pipeline should be something like "avenc_alac ! mp4mux", but it crashes GStreamer :
[cerbero-linux-x86_64]:~/cerbero$ gst-launch-1.0 filesrc location=/tmp/blow.flac ! decodebin ! avenc_alac ! mp4mux ! filesink location=/tmp/blow.flac.m4a
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
(gst-launch-1.0:211): GStreamer-CRITICAL **: gst_buffer_extract: assertion 'dest != NULL' failed
Spinning. Please run 'gdb gst-launch-1.0 211' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
I've tested on Ubuntu 14.04, Fedora 21 and git gstreamer, same crash.
Thanks for taking the time to report this bug.
Without a stack trace from the crash it's very hard to determine what caused it.
Can you get us a stack trace? Please see http://live.gnome.org/GettingTraces for more information on how to do so. Thanks in advance!
You can also use G_DEBUG=fatal_criticals to get the stack trace at the moment of that assertion
Thanks for the bug report. Should be fixed in git master now:
Author: Tim-Philipp Müller <email@example.com>
Date: Thu Dec 25 21:32:40 2014 +0000
qtmux: fix ALAC muxing
Actually copy the codec data instead of copying nothing
and then bombing out because there's no data.
Fixes: gst-launch-1.0 audiotestsrc ! avenc_alac ! qtmux ! fakesink
For the record, here's the stack trace:
0:00:00.471982545 9698 0x7fffec04d0a0 DEBUG qtmux gstqtmux.c:2669:gst_qt_mux_audio_sink_set_caps:<mp4mux0> mp4mux0:audio_0, caps=audio/x-alac, channels=(int)2, rate=(int)44100, channel-mask=(bitmask)0x0000000000000003, samplesize=(int)0, codec_data=(buffer)00000024616c616300000000000010000010280a0e02000000004004001588800000ac44
(gst-launch-1.0:9698): GStreamer-CRITICAL **: gst_buffer_extract: assertion 'dest != NULL' failed
Program received signal SIGTRAP, Trace/breakpoint trap.
data->data was NULL because the codec_config GstBuffer had a length of 0, so nothing got allocated, and it was 0 because no data was copied because of flags=NONE passed to gst_buffer_copy_region().
*** Bug 745619 has been marked as a duplicate of this bug. ***