Legacy v6 and v7 UMC libraries have sample code to encode single track MPEG-4 files [video only]. I built a C++ class calling that code, worked fine. Then enhanced the C++ class to contain both a video and audio track, and now it's broken. In audio-video-codecs\codec\mpeg4_mux\src\umc_mp4_mux.cpp, function MuxData, there's a call to function FindMinTrackEnd, which MuxData then uses to decide which track to write to. Initially, FindMinTrackEnd returns 0 which is the video track. Soon after, FiindMinTrackEnd returns 1 which is the audio track, but there is no audio data to write. This confuses code calling MuxData, causes memory leaks, failures to call UnlockOutputBuffer from PutVideoData, and eventually everything breaks.
Has anyone any examples of writing multiple track MPEG-4 files?
As I know "Media SDK" part of this forum has samples and whitepapers to encode and decode mp4 files. Media SDK itself is not able to split or mux elementary streams (tracks), so they use muxing abilities of IPP in old sample and FFMpeg in new (see whitepapers for Media SDK).
I understand it is not quit you want, but may be it will help.
Roman: thank you. I am aware of FFMpeg, and will consider its use once I am convinced that the problem is within IPP/UMC and not my use of IPP/UMC. It would be helpful to know if anyone has successfully used IPP/UMC to ENCODE a two track, video+audio, MPEG-4 file. Thanks again.