May i add also...
There is so many codec out there, so many way to encode video and Audio... !
It is "impossible" to find a hardware that are 100 % compatible with All codec.
Like MP4, also known as DIVX, XVID,... there is a way to encode the audio, and also another way to encode the video. Both are encoded seperatly (but look like encode at the same time), and MUX toghether after. It's the reason why we found so many problems...
And also, all software creator preach for they're codec first. They offerd the "compatible one", but argue that their "own" codec are better. It work perfectly with their application, but not necessary compatible with everything.