I've got a particular FLV (VP6/LAME) file that is 400 x 171 pixels as reported by the BITMAPINFOHEADER
structure and as verified by a number of FLV metadata editors such as RichFLV.
However, when grabbing a sample from it using an ISampleGrabber
the resulting sample (at 3 bytes per pixel) is only 204,000 bytes (400 x 170 x 3) rather than 205,200 bytes (400 x 171 x 3) as I'd expect.
As I'm trying to shove only 400 x 170's worth of data into a 400 x 171 Bitmap
object's constructor, it's getting rather upset and causing A/V exceptions.
I could hack this to detect 'close but not quite as expected' sample sizes, but I'd really like to know where the 1px of vertical height has gone in the process. My guess is a dodgy filter that doesn't support odd values for width/height and is removing it, but I'm not sure of an easy way to check this.
Anybody have any idea what could be happening and how to verify it?
(PS: I'm not a good C/C++ developer, so please no solutions involving excessive use of it)