|
|
|
@ -2297,18 +2297,18 @@ static int output_packet(InputStream *ist, |
|
|
|
|
/* handle stream copy */ |
|
|
|
|
if (!ist->decoding_needed) { |
|
|
|
|
rate_emu_sleep(ist); |
|
|
|
|
ist->pts = ist->next_pts; |
|
|
|
|
ist->dts = ist->next_dts; |
|
|
|
|
switch (ist->st->codec->codec_type) { |
|
|
|
|
case AVMEDIA_TYPE_AUDIO: |
|
|
|
|
ist->next_pts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) / |
|
|
|
|
ist->next_dts += ((int64_t)AV_TIME_BASE * ist->st->codec->frame_size) / |
|
|
|
|
ist->st->codec->sample_rate; |
|
|
|
|
break; |
|
|
|
|
case AVMEDIA_TYPE_VIDEO: |
|
|
|
|
if (pkt->duration) { |
|
|
|
|
ist->next_pts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q); |
|
|
|
|
ist->next_dts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q); |
|
|
|
|
} else if(ist->st->codec->time_base.num != 0) { |
|
|
|
|
int ticks= ist->st->parser ? ist->st->parser->repeat_pict + 1 : ist->st->codec->ticks_per_frame; |
|
|
|
|
ist->next_pts += ((int64_t)AV_TIME_BASE * |
|
|
|
|
ist->next_dts += ((int64_t)AV_TIME_BASE * |
|
|
|
|
ist->st->codec->time_base.num * ticks) / |
|
|
|
|
ist->st->codec->time_base.den; |
|
|
|
|
} |
|
|
|
|