OSDN Git Service

fix timestamps rescaling, index in source format might be different
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Fri, 30 May 2008 01:44:35 +0000 (01:44 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Fri, 30 May 2008 01:44:35 +0000 (01:44 +0000)
Originally committed as revision 13546 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffserver.c

index 8afd493..04c16a0 100644 (file)
@@ -2078,6 +2078,7 @@ static int http_prepare_data(HTTPContext *c)
                     }
                 }
             } else {
+                int source_index = pkt.stream_index;
                 /* update first pts if needed */
                 if (c->first_pts == AV_NOPTS_VALUE) {
                     c->first_pts = av_rescale_q(pkt.dts, c->fmt_in->streams[pkt.stream_index]->time_base, AV_TIME_BASE_Q);
@@ -2169,11 +2170,11 @@ static int http_prepare_data(HTTPContext *c)
                     c->fmt_ctx.pb->is_streamed = 1;
                     if (pkt.dts != AV_NOPTS_VALUE)
                         pkt.dts = av_rescale_q(pkt.dts,
-                                               c->fmt_in->streams[pkt.stream_index]->time_base,
+                                               c->fmt_in->streams[source_index]->time_base,
                                                ctx->streams[pkt.stream_index]->time_base);
                     if (pkt.pts != AV_NOPTS_VALUE)
                         pkt.pts = av_rescale_q(pkt.pts,
-                                               c->fmt_in->streams[pkt.stream_index]->time_base,
+                                               c->fmt_in->streams[source_index]->time_base,
                                                ctx->streams[pkt.stream_index]->time_base);
                     if (av_write_frame(ctx, &pkt))
                         c->state = HTTPSTATE_SEND_DATA_TRAILER;