summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-02-06 19:08:32 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2012-02-09 21:51:29 -0500
commita75bc764ec89d800fa8d70662f16f89cdec17b49 (patch)
tree074fa5823ac10d6708cc4a0e3f808056afb7aecc
parentd483bb58c318b0a6152709cf28263d72200b98f9 (diff)
avcodec: for audio encoding, set packet dts to packet pts.
There are no audio encoders which do frame reordering.
-rw-r--r--avconv.c2
-rw-r--r--libavcodec/utils.c16
2 files changed, 11 insertions, 7 deletions
diff --git a/avconv.c b/avconv.c
index 57a4c926f3..418e1fde8b 100644
--- a/avconv.c
+++ b/avconv.c
@@ -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() */