[FFmpeg-devel] [PATCH] Sync the NTP timestamps for RTP streams
Martin Storsjö
martin
Mon Mar 15 10:27:59 CET 2010
On Thu, 11 Mar 2010, Martin Storsj? wrote:
> On Thu, 11 Mar 2010, Michael Niedermayer wrote:
>
> > On Thu, Mar 11, 2010 at 11:51:08AM +0200, Martin Storsj? wrote:
> > >
> > > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> > > index 10371a4..7c74951 100644
> > > --- a/libavformat/avformat.h
> > > +++ b/libavformat/avformat.h
> > > @@ -526,6 +526,14 @@ typedef struct AVStream {
> > > * Number of frames that have been demuxed during av_find_stream_info()
> > > */
> > > int codec_info_nb_frames;
> > > +
> > > + /**
> > > + * Start time of the stream in real world time, in microseconds
> > > + * since the unix epoch.
> > > + * - encoding: Set by user.
> > > + * - decoding: Unused.
> > > + */
> > > + int64_t start_time_realtime;
> >
> > this is not completely clear, we have
> > time of transmission of first packet
> > time of decoding of first packet
> > time of presentation of first packet
> > time corresponding to timestamp=0 instead of first packet
> >
> > and i think you should write out what the unix epoch is
>
> Ok, I'll clarify it. In this case, it is the real-world time corresponding
> to timestamp = 0 in the stream, that is, when the data was captured.
>
> > that said, i didnt follow the thread very much, could you explain in a few
> > lines why this is needed?
>
> Syncing of multiple RTP streams is done through sender reports, where the
> sender says that timestamp X in the RTP stream corresponds to real-world
> time Y.
>
> When sending multiple RTP streams, currently the timestamp=0 <-> realworld
> time mapping is made when the RTP muxer is opened, which makes the
> timestamp=0 map to different realworld times in the muxers, since the RTP
> muxers can't be opened at the exact same time. (In practice, one can get a
> 5-30 ms difference between them, when doing RTSP commands inbetween.)
>
> So when writing multiple RTP streams, we need to make sure timestamp=0
> maps to the exact same realworld time, so that the receiver can sync the
> streams back together.
>
> In the RTP scenarios, the actual value of the NTP timestamps doesn't
> matter all that much, only the difference between them is used for syncing
> the streams together.
Updated patch attached, clarified the details of this field.
Also, I realized that there's no need to keep it separate for each
AVStream, so moved it to AVFormatContext instead.
Is this ok to be added?
// Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: start_time_realtime.patch
Type: text/x-diff
Size: 908 bytes
Desc:
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100315/1fa75abf/attachment.patch>
More information about the ffmpeg-devel
mailing list