[FFmpeg-cvslog] avcodec: do not override pts or duration from the audio encoder

Justin Ruggles git at videolan.org
Wed Feb 22 03:01:52 CET 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Fri Feb 10 17:16:18 2012 -0500| [70749c483c53312faa83ff3890fa4e2f7135453d] | committer: Justin Ruggles

avcodec: do not override pts or duration from the audio encoder

This allows encoders to set pts and/or duration even if they do not use
CODEC_CAP_DELAY.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=70749c483c53312faa83ff3890fa4e2f7135453d
---

 libavcodec/utils.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 2ab3b8e..c88f379 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -885,9 +885,11 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
         ret = avctx->codec->encode2(avctx, avpkt, frame, got_packet_ptr);
         if (!ret && *got_packet_ptr) {
             if (!(avctx->codec->capabilities & CODEC_CAP_DELAY)) {
-                avpkt->pts = frame->pts;
-                avpkt->duration = ff_samples_to_time_base(avctx,
-                                                          frame->nb_samples);
+                if (avpkt->pts == AV_NOPTS_VALUE)
+                    avpkt->pts = frame->pts;
+                if (!avpkt->duration)
+                    avpkt->duration = ff_samples_to_time_base(avctx,
+                                                              frame->nb_samples);
             }
             avpkt->dts = avpkt->pts;
         } else {



More information about the ffmpeg-cvslog mailing list