[FFmpeg-devel] [PATCH] Use tkhd matrix for proper display in mov

John Schmiederer jschmiederer
Wed May 28 17:14:31 CEST 2008


> On Tue, May 27, 2008 at 02:49:24PM -0400, John Schmiederer wrote:
> > > > Attached is a patch to account for the transformation matrix
> contained in the tkhd atom for proper display width/height.
> > >
> > > > The video
> > > >
> http://samples.mplayerhq.hu/mov/tkhd_matrix/white_zombie_scrunch.m
> > > > ov plays at 160x240 when it should really be scaled to 320x240.
> > >
> > > > +    int i;
> > > > +    int width;
> > > > +    int height;
> > > > +    float disp_transform[3];
> > > > +    float display_matrix[3][3];
> > >
> > > please use integers, there is no need for floats.
> > >
> > Ok, I changed display_matrix to int, but left disp_transform as float
> to avoid any possible overflow from multiplying large ints.
>
> use a*(int64_t)b
>
All right - no more nasty floats - I switched it to int64_t.
The only caveat is a float cast when calculating the aspect ratio, since multiplying an int_64 by an int_32 won't fit in 64bit precision.

To Reimar's note "we do have function for multiplying two 16.16 fixed-point numbers correctly"; I couldn't find those functions.  If anyone knows where that is off the top of their head, I would be appreciated.  The closest thing I found was libavutil/integer, and that didn't look used.

-John
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ff_mov_tkhd_matrix4.diff
Type: application/octet-stream
Size: 1907 bytes
Desc: ff_mov_tkhd_matrix4.diff
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080528/62d1387e/attachment.obj>



More information about the ffmpeg-devel mailing list