[Ffmpeg-devel] Frame rates and time_base

Måns Rullgård mru
Sat May 7 11:33:58 CEST 2005


Rich Felker <dalias at aerifal.cx> writes:

> On Sat, May 07, 2005 at 12:00:46AM +0200, M?ns Rullg?rd wrote:
>> Bill May <wmay at cisco.com> writes:
>> 
>> > M?ns Rullg?rd wrote:
>> >> OK, I'll try to rephrase it.  Where does libavcodec get the values it
>> >> puts in AVFrame.pts?  If the demuxer supplies a pts with a frame, I'd
>> >> like that pts to appear in the corresponding AVFrame.  How do I tell
>> >> libavcodec about the pts of the encoded frames I'm feeding it?
>> >
>> > I'd like to know if:
>> >
>> > for the encoder, if it is possible to put a DTS, then get the PTS
>> > of the returned frame ?  (x264 has this).
>> >
>> > for the decoder, pass in a PTS, and get a DTS from the decoded frame.
>> 
>> If PTS and DTS are different for an encoded frame, there is no way to
>> determine one from the other.  While decoding a sequence of frames, it
>> is of course possible to determine any PTS, given the PTS of one of
>> the frames.
>
> Huh? Given a sequence of frames and their order, it's possible (and
> easy -- see the NUT spec) to convert PTS to DTS.

The NUT spec is irrelevant.  Most containers don't give the display
order explicitly.  However, the encoded video must contain that
information, if the codec uses frame reordering.  Take H.264 as an
example.  The display order is determined by the picture order
counter, which is a field in the frame header.  In general, the only
way to know the display order of a frame sequence is to decode at
least the frame headers.  Without doing this, you simply cannot know
what information they will convey.

Without explicit values for PTS and DTS for a frame, they can only be
inferred by looking at a sequence containing the frame.

> On the other hand it's impossible to convert DTS to PTS without
> knowing specifics of the codec.. :(
>
> The situation would be reversed if you store frames in display order
> rather than decode order, but that's just stupid..

Certainly.

-- 
M?ns Rullg?rd
mru at inprovide.com





More information about the ffmpeg-devel mailing list