diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-02-06 19:08:32 -0500 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-02-09 21:51:29 -0500 |
commit | a75bc764ec89d800fa8d70662f16f89cdec17b49 (patch) | |
tree | 074fa5823ac10d6708cc4a0e3f808056afb7aecc | |
parent | d483bb58c318b0a6152709cf28263d72200b98f9 (diff) | |
download | ffmpeg-a75bc764ec89d800fa8d70662f16f89cdec17b49.tar.gz |
avcodec: for audio encoding, set packet dts to packet pts.
There are no audio encoders which do frame reordering.
-rw-r--r-- | avconv.c | 2 | ||||
-rw-r--r-- | libavcodec/utils.c | 16 |
2 files changed, 11 insertions, 7 deletions
@@ -991,6 +991,8 @@ static int encode_audio_frame(AVFormatContext *s, OutputStream *ost, if (got_packet) { if (pkt.pts != AV_NOPTS_VALUE) 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) pkt.duration = av_rescale_q(pkt.duration, enc->time_base, ost->st->time_base); diff --git a/libavcodec/utils.c b/libavcodec/utils.c index c890cf96e9..9dded6ae05 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -873,12 +873,14 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, if (avctx->codec->encode2) { *got_packet_ptr = 0; ret = avctx->codec->encode2(avctx, avpkt, frame, got_packet_ptr); - if (!ret && *got_packet_ptr && - !(avctx->codec->capabilities & CODEC_CAP_DELAY)) { - avpkt->pts = frame->pts; - avpkt->duration = av_rescale_q(frame->nb_samples, - (AVRational){ 1, avctx->sample_rate }, - avctx->time_base); + if (!ret && *got_packet_ptr) { + if (!(avctx->codec->capabilities & CODEC_CAP_DELAY)) { + avpkt->pts = frame->pts; + avpkt->duration = av_rescale_q(frame->nb_samples, + (AVRational){ 1, avctx->sample_rate }, + avctx->time_base); + } + avpkt->dts = avpkt->pts; } } else { /* for compatibility with encoders not supporting encode2(), we need to @@ -925,7 +927,7 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, av_freep(&avpkt->data); } else { 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 once all encoders supporting CODEC_CAP_SMALL_LAST_FRAME use encode2() */ |