First of all, there is no such thing as just MP4. This is a class of compression algorithms for both audio and video, and that's not all: there is also such thing a the container format. I don't want to explain it all here; you may want to read about related topics on Wikipedia; and it would be several different articles.
I would strongly advise to use open-source multi-platform FFmpeg or libavcodec libraries and set of utilities. Please see:
http://en.wikipedia.org/wiki/Ffmpeg[
^],
http://ffmpeg.org/[
^],
http://en.wikipedia.org/wiki/Libavcodec[
^],
http://libav.org/[
^].
This stuff is written in C, so you can use the library from your C++ code. This is the best code I ever saw, it helped me in many most difficult situations related to processing media data.
Microsoft? In terms of support of variety of standards, they never did anything serious, be it their encoder or even Windows Media Player. In such cases where the wide sets of algorithms and standards are involved, open-source is a natural winner, because such project can use the help of very many contributors.
—SA