Commit a75bc764 authored by Justin Ruggles's avatar Justin Ruggles

avcodec: for audio encoding, set packet dts to packet pts.

There are no audio encoders which do frame reordering.
parent d483bb58
...@@ -991,6 +991,8 @@ static int encode_audio_frame(AVFormatContext *s, OutputStream *ost, ...@@ -991,6 +991,8 @@ static int encode_audio_frame(AVFormatContext *s, OutputStream *ost,
if (got_packet) { if (got_packet) {
if (pkt.pts != AV_NOPTS_VALUE) if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts = av_rescale_q(pkt.pts, enc->time_base, ost->st->time_base); pkt.pts = av_rescale_q(pkt.pts, enc->time_base, ost->st->time_base);
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts = av_rescale_q(pkt.dts, enc->time_base, ost->st->time_base);
if (pkt.duration > 0) if (pkt.duration > 0)
pkt.duration = av_rescale_q(pkt.duration, enc->time_base, ost->st->time_base); pkt.duration = av_rescale_q(pkt.duration, enc->time_base, ost->st->time_base);
......
...@@ -873,12 +873,14 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, ...@@ -873,12 +873,14 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
if (avctx->codec->encode2) { if (avctx->codec->encode2) {
*got_packet_ptr = 0; *got_packet_ptr = 0;
ret = avctx->codec->encode2(avctx, avpkt, frame, got_packet_ptr); ret = avctx->codec->encode2(avctx, avpkt, frame, got_packet_ptr);
if (!ret && *got_packet_ptr && if (!ret && *got_packet_ptr) {
!(avctx->codec->capabilities & CODEC_CAP_DELAY)) { if (!(avctx->codec->capabilities & CODEC_CAP_DELAY)) {
avpkt->pts = frame->pts; avpkt->pts = frame->pts;
avpkt->duration = av_rescale_q(frame->nb_samples, avpkt->duration = av_rescale_q(frame->nb_samples,
(AVRational){ 1, avctx->sample_rate }, (AVRational){ 1, avctx->sample_rate },
avctx->time_base); avctx->time_base);
}
avpkt->dts = avpkt->pts;
} }
} else { } else {
/* for compatibility with encoders not supporting encode2(), we need to /* for compatibility with encoders not supporting encode2(), we need to
...@@ -925,7 +927,7 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, ...@@ -925,7 +927,7 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
av_freep(&avpkt->data); av_freep(&avpkt->data);
} else { } else {
if (avctx->coded_frame) if (avctx->coded_frame)
avpkt->pts = avctx->coded_frame->pts; avpkt->pts = avpkt->dts = avctx->coded_frame->pts;
/* Set duration for final small packet. This can be removed /* Set duration for final small packet. This can be removed
once all encoders supporting CODEC_CAP_SMALL_LAST_FRAME use once all encoders supporting CODEC_CAP_SMALL_LAST_FRAME use
encode2() */ encode2() */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment