[FFmpeg-devel] [PATCH] Implement PAFF in H.264
Michael Niedermayer
michaelni
Wed Sep 26 03:34:56 CEST 2007
Hi
On Tue, Sep 25, 2007 at 03:51:11PM -0400, Jeff Downs wrote:
> On Mon, 24 Sep 2007, Jeff Downs wrote:
>
> > On Mon, 24 Sep 2007, Michael Niedermayer wrote:
> > >
> > > IMHO the AVFrame.reference code should be fixed first unless this turns
> > > out to be very complex to fix
> > >
> >
> > OK. I took a second look at how Picture.reference is used in mpegvideo.c
> > and h264.c. For current SVN (no PAFF), its not too difficult to fix
> > (replace use of reference = 1 with 4 as suggested).
> >
> >
> > When PAFF is considered, two problems present:
> >
> > First, a place to store a second field's "is a reference" flag is needed,
> > separate from the reference marking of the first field in a pair.
> >
> > Would using s->dropable for this be an acceptable solution? Or should
> > I continue with current_picture.reference?
> >
> > This way:
> >
> > s->dropable == current field or frame needs reference marking when
> > complete.
> >
> > current_picture.(_ptr->)reference == PICT_XXX, or 4, as dictated by
> > and set in reference picture marking process and delayed picture holding.
> >
> >
> > Second, MPV_frame_start forces a value of 3 onto reference for ref frames.
> > This could be solved by replacing "3" with s->picture_structure. But that
> > doesn't really make complete sense for mpeg2.
> >
> > Another option is to let MPV_frame_start still set 3, but override in
> > h264 with picture_structure.
> >
> > Another option still is to override with zero, and then let the frame end
> > processing (ref marking and pic output) take total control of the
> > reference variable handling. This is good because it isolates reference
> > handling to one area.
> >
>
> Attached is a patch that cleans up handling of Picture.reference in h264
> using some of the above-described approach.
>
> I decided to change MPV_frame_start to use s->picture_structure for
> reference in h264 case because it was already testing for h264 there
> anyway. This prepares for PAFF implementation.
>
> This also makes current_picture.reference necessarily ==
> current_picture_ptr->reference and updates any tests of either to have
> field references in mind.
>
> If ok, I will update PAFF implementation based on this.
ok
[...]
> +/*
> + * Value of Picture.reference when Picture is not a reference picture, but
> + * is held for delayed output.
> + */
> +#define DELAYED_PIC_REF 4
not doxygen compatible
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
I have often repented speaking, but never of holding my tongue.
-- Xenocrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070926/8b8a6018/attachment.pgp>
More information about the ffmpeg-devel
mailing list