avconv: always reset packet pts after decoding an audio frame

Currently, if a decoder sets AVFrame.pts, we'd send the same timestamp
to it twice, which is wrong.
This commit is contained in:
Anton Khirnov 2014-04-12 21:55:46 +02:00
parent b19a5e5198
commit 1ae8198bca

View File

@ -1175,10 +1175,9 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
the decoder could be delaying output by a packet or more. */ the decoder could be delaying output by a packet or more. */
if (decoded_frame->pts != AV_NOPTS_VALUE) if (decoded_frame->pts != AV_NOPTS_VALUE)
ist->next_dts = decoded_frame->pts; ist->next_dts = decoded_frame->pts;
else if (pkt->pts != AV_NOPTS_VALUE) { else if (pkt->pts != AV_NOPTS_VALUE)
decoded_frame->pts = pkt->pts; decoded_frame->pts = pkt->pts;
pkt->pts = AV_NOPTS_VALUE; pkt->pts = AV_NOPTS_VALUE;
}
resample_changed = ist->resample_sample_fmt != decoded_frame->format || resample_changed = ist->resample_sample_fmt != decoded_frame->format ||
ist->resample_channels != avctx->channels || ist->resample_channels != avctx->channels ||