[FFmpeg-devel] [PATCH] AVCHD/H.264 parser: determination of frame type, question about timestamps
Michael Niedermayer
michaelni
Sun Feb 1 01:48:10 CET 2009
On Sun, Feb 01, 2009 at 01:17:24AM +0100, Ivan Schreter wrote:
> Michael Niedermayer wrote:
> > On Mon, Jan 26, 2009 at 08:42:17AM +0100, Ivan Schreter wrote:
> > [...]
> >
> >> We have a stream with pictures containing (T1/B1/T2==T1), (B2/T3/B3==B2)
> >> fields. That's two H.264 pictures, but 3 frames. Each av_read_frame()
> >> should return a packte containing exactly single frame. But we have just
> >> 2 packets, which need to be returned in 3 calls to av_read_frame(),
> >> according to API. Further, the DTS must be set correctly as well for the
> >> three AVPackets in order to get the timing correct. How do you want to
> >> handle this?
> >>
> >
> > i dont see where you get 3 calls of av_read_frame(),
> > there are 2 or 4 access units not 3 unless one is coded as 2 fields
> > and 1 is a frame
> >
> >
> No, we don't have 3 calls. First of all, I meant two pictures with
> SEI_PIC_STRUCT_TOP_BOTTOM_TOP and SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM.
> This
> generates 3 frames in the display.
no, it generates 2 frames each with a duration of 1.5 each
> But the caller has to call
> av_read_frame() only twice, so he doesn't get all required timestamps.
> First decoded frame will have timestamp 1, second decoded frame
> timestamp 2 or 3, depending on how it's handled in H.264 decoder. One
> frame has to be added in between, with fields from both frames. This is
> currently not possible to express.
>
> I suppose, there is the need to do something like repeat_pic on field
> level, but this means API change.
>
> >> And as already mentioned, the case with (T1), (B1), (T2), (B2), we are
> >> returning 4 packets via av_read_frame() for 2 frames, which is against
> >> API. How to handle this? My idea was delaying return from h264_parse,
> >> until second field also parsed
> >>
> >
> > well, just consider the exampl that timestamps are always associated with
> > the second field instead of the first. You couldnt associate them with the
> > AVPackets
> >
> I don't believe someone would produce such streams. Anyway, the standard
> _requires_ DTS/PTS coding for all frames having DTS != PTS, so even in
> this case, I- and P-slices would have to have timestamps. The timestamps
> of B-slices in between can be computed.
this sounds like utter nonsense
where is the standard supposed to require this?
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
If you really think that XML is the answer, then you definitly missunderstood
the question -- Attila Kinali
-------------- 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/20090201/8b12a0c9/attachment.pgp>
More information about the ffmpeg-devel
mailing list