[FFmpeg-devel] [PATCH] libavdevice: JACK demuxer
Fri Feb 27 22:06:24 CET 2009
Olivier Guilyardi wrote:
>>> I have a simple question here: must the pts be absolute (number of seconds since
>>> the epoch) or can it be relative (for example 0 for the first audio sample).
>>> Luca you already told me it must be absolute, but I still have doubts about this.
>> If it is relative to the first audio sample, how do you synchronise with
>> a different stream (that does not know when this stream's first audio
>> sample is)?
> First, I suspect that ffmpeg already treats pts as relative, because when you
> start it, it prints "Duration: .., start: .., bitrate: .." for all of its input
> streams. With an avi file as input I get start: 0.0000, while with an oss input
> it prints an absolute epoch-based value (1235767507 or so).
I do not know what ffmpeg does, but it is not the only program using
libavformat. A program using libavformat for grabbing audio and video
needs absolute timestamps to synchronise them.
> However, when I use two inputs, one relative (a file) and the other absolute (a
> jack input for example), the audio and the video are in sync.
If you use a file and a live source, it's difficult to say what "in
sync" means... I am referring to a live audio source (alsa, or jack) and
a live video source (v4l2). This is the case where synchronisation is
more an issue.
> Second, to answer your question, some sort of syncing is just matter of
> substracting the start time (the time in the first AVPacket) from the pts in the
> subsequent packets. And of course adjust possible delays with -itsoffset.
Of course you can do that; but this means that for live sources you have
to "calibrate" this delay every time you start capturing...
> I'm not saying this is a good approach. I'm just trying to understand how it's
> (and must be) done in ffmpeg. So, absolute or relative?
Well, let's see Michael's opinion. If he says "relative" I'll trust him
but right now I believe that for live inputs timestamps are absolute.
More information about the ffmpeg-devel