I'm not agree about your opinion about MP4Splitter::GetInfo method. If you use it properly you'll understand its main advantages. It became more understandable, it saves your memory and supports more features.
1) Calling GetInfo you get pointer to internal MP4Splitter structure which is always up to date and is used by splitter itself. You can get all information about the stream from there. Nothing is hidden from you.
2)Now it doesn't allocate memory which is usually lost since users always forget to free it.Why shoulduser free anything if he allocated nothig? Moreover, imagine that a stream has 10 tracks and you want to get info of the 3d one. The old GetInfo would allocate memory for all 10 tracks.
3) MP4Splitter supports any number of tracks in MP4 container. That is why now wehave the only API for GetNextData where we should pass the number of track we're interested in.
So the right algorithm to work with MP4Splitter should be smth. like the following:
1. initialization - as usual
2. getting Infoptr to internal structure via MP4Splitter::GetInfo
3. Infoptr->m_nOfTracks - overall number of tracks found
then you can find Infoptr->m_ppTrackInfo - array of structures where you can find everything anout a track.
Then all youhave todo is to select the track andpass its number toGetNextData.
One trick here. If you find Infoptr->m_nDecSpecInfoLen != 0 then you should pass Infoptr->m_nDecSpecInfo to Decoder::Init so that it could be initialized in the right way.
Feel free to ask me any questions about it.