If new headers arrive after we are initialized, we need to make
sure that they are indeed valid.
A vorbis bitstream always begins with three header packets and must
be in order.
Also some streams have unframed (invalid?) headers that might
confuse and disrupt the decoding process.
Therefore if ever we see new headers, we accumulate them and once
we get a non-header packet we check them to make sure that:
* We have at least 3 headers
* They are the expected ones (identification, comments and setup)
* They are in order
* Any other "header" is ignored
If those conditions are met, we reset and reconfigure the decoder
https://bugzilla.gnome.org/show_bug.cgi?id=784530
Rework the audio caps similar to the video caps. Remove
width/depth/endianness/signed fields and replace with a simple string
format and media type audio/x-raw.
Create a GstAudioInfo and some helper methods to parse caps.
Remove duplicate code from the ringbuffer and replace with audio info.
Use AudioInfo in the base audio filter class.
Port elements to new API.