[FFmpeg-devel] [PATCH][RFC] variable frame sizes

Eric Buehl eric.buehl
Sun May 17 06:40:14 CEST 2009


On Sat, May 16, 2009 at 2:40 AM, Michael Niedermayer <michaelni at gmx.at>wrote:

> On Fri, May 15, 2009 at 09:47:00PM -0700, Eric Buehl wrote:
> > On Fri, May 15, 2009 at 7:46 PM, Michael Niedermayer <michaelni at gmx.at
> >wrote:
> >
> > > On Fri, May 15, 2009 at 04:44:14PM -0700, Eric Buehl wrote:
> > > > On Fri, May 15, 2009 at 3:49 AM, Michael Niedermayer <
> michaelni at gmx.at
> > > >wrote:
> > > >
> > > > > On Thu, May 14, 2009 at 04:04:57PM -0700, Eric Buehl wrote:
> > > > > > Hello,
> > > > > >
> > > > > > I submitted a bug a while back describing ffmpeg's failure to
> account
> > > for
> > > > > > varying frame sizes in a single file.
> > > > > > http://roundup.ffmpeg.org/roundup/ffmpeg/issue879  I have
> confirmed
> > > that
> > > > > the
> > > > > > sample referenced works as expected in mplayer so I do not
> believe it
> > > is
> > > > > a
> > > > > > problem with lavc/lavf.
> > > > >
> > > > > >  Attached is a patch that works for frames of
> > > > > > varying height (possible if interlacing options are mis-used) but
> it
> > > does
> > > > > > not account for changes in width.
> > > > >
> > > > > so its incomplete ...
> > > > >
> > > > > [...]
> > > > >
> > > > > >  ffmpeg.c |   20 ++++++++++++++++++++
> > > > > >  1 file changed, 20 insertions(+)
> > > > > > 726f5c891ba925ffb00806f43c935696105872ef
> > > > >  dynamic_frame_height_adjust.patch
> > > > > > Index: ffmpeg.c
> > > > > >
> ===================================================================
> > > > > > --- ffmpeg.c  (revision 18831)
> > > > > > +++ ffmpeg.c  (working copy)
> > > > > > @@ -923,6 +923,26 @@
> > > > > >      if (ost->video_resample) {
> > > > > >          padding_src = NULL;
> > > > > >          final_picture = &ost->pict_tmp;
> > > > > > +     if(ost->resample_height != ist->st->codec->height)
> > > > >
> > > > > tabs and as this is under if (ost->video_resample)
> > > > > i wonder if it works if thats false to begin with ...
> > > > >
> > > > >
> > > > > > +        {
> > > > >
> > > > > inconsistant { placement
> > > > >
> > > > > [...]
> > > > > --
> > > > > Michael     GnuPG fingerprint:
> 9FF2128B147EF6730BADF133611EC787040B0FAB
> > > > >
> > > > > Frequently ignored awnser#1 FFmpeg bugs should be sent to our
> > > bugtracker.
> > > > > User
> > > > > questions about the command line tools should be sent to the
> > > ffmpeg-user
> > > > > ML.
> > > > > And questions about how to use libav* should be sent to the
> libav-user
> > > ML.
> > > > >
> > > > > -----BEGIN PGP SIGNATURE-----
> > > > > Version: GnuPG v1.4.9 (GNU/Linux)
> > > > >
> > > > > iD8DBQFKDUioYR7HhwQLD6sRAr9nAJ45hYRJiRqxjsz1xAAP+Svzqp+3EgCaA8pO
> > > > > /DWK54Yie4eBCADbqVumAJM=
> > > > > =R+EA
> > > > > -----END PGP SIGNATURE-----
> > > >
> > > >
> > > > > _______________________________________________
> > > > > ffmpeg-devel mailing list
> > > > > ffmpeg-devel at mplayerhq.hu
> > > > > https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
> > > > >
> > > >
> > > >
> > > > Here is an updated patch.  I have add a more correct comparison
> (which
> > > > includes frame top/bottom bands) as well as formatting clean-up.  It
> also
> > > > checks for changes in width in the same fashion.
> > >
> > > i tried it with a 100x100 + 200x200 mpg concatenated, but it did not
> work
> > > just heavy artifacts
> > >
> > > [...]
> > > --
> > > Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> > >
> > > Democracy is the form of government in which you can choose your
> dictator
> > >
> > > -----BEGIN PGP SIGNATURE-----
> > > Version: GnuPG v1.4.9 (GNU/Linux)
> > >
> > > iD8DBQFKDij0YR7HhwQLD6sRAuwRAJ4ycSjn8ajfMyHg7vXdC7fDg+U8lACeI5Pf
> > > AeEgbvYibsIkk5TCybRYU9I=
> > > =H+W4
> > > -----END PGP SIGNATURE-----
> > >
> > > _______________________________________________
> > > ffmpeg-devel mailing list
> > > ffmpeg-devel at mplayerhq.hu
> > > https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
> > >
> >
> > I was not able to reproduce this as you describe with a 100x100 mpg
> catted
> > with a 200x200 mpg.  Can you send me your test file and/or the steps to
> > produce it?
>
> ./ffmpeg -i matrixbench_mpeg2.mpg -s 100x100 -t 1 m100100.mpg
> ./ffmpeg -i matrixbench_mpeg2.mpg -s 200x200 -t 1 m200200.mpg
> cat m100100.mpg m200200.mpg >m.mpg
> ./ffmpeg -i m.mpg n.mpg
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> it is not once nor twice but times without number that the same ideas make
> their appearance in the world. -- Aristotle
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iD8DBQFKDooGYR7HhwQLD6sRAkmKAKCHsxSw7rmBFAV+/aPZWNWd3tOOFACfeep/
> M28rhl94MsvtPESLjNyDLgY=
> =oNWX
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>


I understand now.  Correct, this does not touch the code path for the patch
I have written because resampling is not explicitly requested by using the
-s option.  However, the intent of this patch is only to ensure that when
resamping is requested, the output meets the requested frame size.  The
example you have given does not request resizing and I am not sure what the
correct functionality should be in this case.  Is this suitable for
integration as is?

Eric



More information about the ffmpeg-devel mailing list