From: Andrew S. <and...@ne...> - 2003-06-19 16:59:50
|
On Monday 09 Jun 2003 8:00 pm, Scott Smith wrote: > > Hi Scott, > > > > > I don't understand how the offset can be applied to both the DTS and > > > PTS in video. You either apply it to one, or the other. > > > > Very simple... the -O offset is a timing offset of video relative to > > audio. > > -O specifies a number. is this number the difference between the > video PTS and the audio PTS, or is it the difference between the > video DTS and the audio PTS? > > I understand that if the PTS changes then the DTS changes, but that > doesn't ansewr the question of exactly what is being put in sync... Every frame of data, audio and video has (logically speaking) two timestamps associated with it. One DTS says when it should be removed from the decoders buffer and decoded the other PTS says when the decoded result should be presented. For audio, always DTS=PTS and only one is supplied (PTS if I recall rightly). For video DTS and PTS vary a lot depending on GOP structure because P and I frames have to be decoded *before* the decoding and presentation of the B frames that depend on them. I.e. they are decoded up to 3 frame periods before they themselves are displayed. Now if I tell the encoder to delay video relative to audio by 20mSec it, basically, encodes the stream with video timestamps 20mSec greater than normal. However, because the relative timing of DTS and PTS of frames depends on GOP structure I have to shift DTS *and* by the same amount otherwise the decoder may get impossible timestamps. E.g. being told to present a frame *before* it was supposed to decode it. Andrew |