views:

400

answers:

1

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)

A: 

My best guess is a dodgey/buggy FLV filter. What happens when you try a different FLV filter? Do other FLV files report incorrect video dimensions?

Jeremiah Morrill