WAV is one of the most popular audio format in use. The bit stream structure of a .wav file consist of a fixed-size header (44 bytes) and a payload containing PCM samples. Crucial parameters like sample rate, duration of a recording, bit depth, number of channels, compression code or bit stream are kept in wav header. Payload section carries only sound samples for each channel in interleaved or non-interleaved order.
Gstreamer is fully compatible with mono, stereo or multichannel streaming. Unfortunately, wavenc, standard element does not support encoding more than two channels. This functionality is desired in audio system based on multichannel recording. 3DAudioSense belongs to this group, so we solved this issue by implementing additional wavnchenc element, thus we enabled gstreamer to produce multichannel wave files.
Imagine situation where application operates on samples from 9 independent sound sources. The interleave element produces stream of raw output data as a combination of interlaced frames. Wavnchenc constructs the wav header from data gathered from the input element and pushes it to the front of streaming buffers. Finally, the output file can be played back e.g. in Audacity. Exemplary pipeline is presented below:
gst-launch interleave name=il \
It is possible to test our implementation of wavnchenc plugin. Just download it from our git site and follow the installation commands. Our official github side is[Zylia-RnD].
3D AudioSense is a research project which focuses on the capturing of spatial audio scene using a distributed wireless sensor network.