RTSP: Synchronize the start time of the chained RTP muxers
This makes sure that the streams get correctly synchronized when viewed, previously the streams were out of sync by as much time as it took between the initialization of the individual muxers. Originally committed as revision 22545 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -612,6 +612,7 @@ void ff_rtsp_close_streams(AVFormatContext *s)
|
||||
static void *rtsp_rtp_mux_open(AVFormatContext *s, AVStream *st,
|
||||
URLContext *handle)
|
||||
{
|
||||
RTSPState *rt = s->priv_data;
|
||||
AVFormatContext *rtpctx;
|
||||
int ret;
|
||||
AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL);
|
||||
@@ -634,6 +635,9 @@ static void *rtsp_rtp_mux_open(AVFormatContext *s, AVStream *st,
|
||||
/* Copy other stream parameters. */
|
||||
rtpctx->streams[0]->sample_aspect_ratio = st->sample_aspect_ratio;
|
||||
|
||||
/* Set the synchronized start time. */
|
||||
rtpctx->start_time_realtime = rt->start_time;
|
||||
|
||||
/* Remove the local codec, link to the original codec
|
||||
* context instead, to give the rtp muxer access to
|
||||
* codec parameters. */
|
||||
@@ -1340,6 +1344,8 @@ static int rtsp_setup_output_streams(AVFormatContext *s, const char *addr)
|
||||
char *sdp;
|
||||
AVFormatContext sdp_ctx, *ctx_array[1];
|
||||
|
||||
rt->start_time = av_gettime();
|
||||
|
||||
/* Announce the stream */
|
||||
snprintf(cmd, sizeof(cmd),
|
||||
"ANNOUNCE %s RTSP/1.0\r\n"
|
||||
|
||||
Reference in New Issue
Block a user