The internal functions in DLLs that we use should allow us to gather the number of reframes - FFmpeg output is limited, compared to what we get internally. We are not storing/using that information yet, but it's all coming soon.

The profile levels actually specify limits on the reframes, so they are still useful: http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC - of course the problem is when people start doing non-standard stuff, hoping that software players will adjust (and they do in most cases). The hardware players are of course less flexible and thus we have this issue.

When Mezzmo needs to change the profile level, we do full transcoding as well, since as you've noted, it's not enough to simply fool a device into thinking the file is of certain characteristics.

Basically, I think it comes down to us storing reframes for the file and then using that in addition to profile level to make sure the file is as per the spec and if it's not, then we transcode to make it adhere to the spec.