[FFmpeg-devel] [PATCH] Add a time_base field to AVFilterPad.
Michael Niedermayer
michaelni
Tue Oct 5 13:48:41 CEST 2010
On Tue, Oct 05, 2010 at 11:16:51AM +0200, Stefano Sabatini wrote:
> On date Monday 2010-10-04 00:12:15 +0200, Michael Niedermayer encoded:
> > On Sun, Oct 03, 2010 at 11:23:49PM +0200, Stefano Sabatini wrote:
> > > On date Sunday 2010-10-03 21:07:55 +0200, Michael Niedermayer encoded:
> [...]
> > > static int config_output(AVFilterLink *outlink)
> > > {
> > > AVFilterContext *ctx = outlink->src;
> > >
> > > /* choose the output timebase */
> > > AVRational tb1 = ctx->input_pads[MAIN ].time_base;
> > > AVRational tb2 = ctx->input_pads[OVERLAY].time_base;
> > > AVRational tb;
> > > int exact = 1;
> > >
> > > exact *= av_reduce(&tb1.num, &tb1.den, tb1.num, tb1.den, INT32_MAX);
> > > exact *= av_reduce(&tb2.num, &tb2.den, tb2.num, tb2.den, INT32_MAX);
> > > exact *= av_reduce(&tb.num, &tb.den,
> > > (int64_t)tb1.num * tb2.num, (int64_t)tb1.den * tb2.den, INT_MAX);
> >
> > your code makes no sense
> > with a/b and c/d
> >
> > you need something like:
> > reduce(gcd(ad,cb)/bd)
>
> AVRational = {int, int}
>
> int*int may overflow int64_t,
not on any supported platform nor would it work if such platform was supported
because that case would then inevtitable fail on all other platforms
> so I convert {int,int} to {int32_t,int32_t}.
I couldnt fit 2 apples in the box so i cut them in half and put 2 halfs in
that solves the problem that i cannot put more than 1 whole apple in
>
> Finally I do int32_t*int32_t in the third reduce, so I know that it
> can't overflow int64_t:
> exact *= av_reduce(&tb.num, &tb.den,
> (int64_t)tb1.num * tb2.num, (int64_t)tb1.den * tb2.den, INT_MAX);
your code makes absolutely no sense
try
tb1=1/6
tb2=1/15
correct result=1/30
your code produces 1/90 this is wrong its not overflow you apply the wrong
math to it like doing a multiplication where you would need divission
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20101005/7276474f/attachment.pgp>
More information about the ffmpeg-devel
mailing list