summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Massiot <massiot@via.ecp.fr>2011-02-10 16:38:03 +0100
committerMans Rullgard <mans@mansr.com>2011-02-15 14:20:19 +0000
commit55bad0c602c75a2c7e4dbfa466edacb0bad6a6eb (patch)
tree7e12126f25ba128d3cd43f157de7ac3b04cbf59f
parent71f88b1f3843fdb676d6f72181da0c8c460341d8 (diff)
Pass VBV delay to the calling application via ctx
VBV delay is useful for T-STD compliance in some TS muxers. It is certainly possible to retrieve it by parsing the output of FFmpeg, but getting it from the context makes it simpler and less error-prone. Signed-off-by: Mans Rullgard <mans@mansr.com>
-rw-r--r--libavcodec/avcodec.h10
-rw-r--r--libavcodec/mpegvideo_enc.c1
2 files changed, 10 insertions, 1 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index e48033dca0..9ed6f50856 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -32,7 +32,7 @@
#include "libavutil/cpu.h"
#define LIBAVCODEC_VERSION_MAJOR 52
-#define LIBAVCODEC_VERSION_MINOR 112
+#define LIBAVCODEC_VERSION_MINOR 113
#define LIBAVCODEC_VERSION_MICRO 1
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -2892,6 +2892,14 @@ typedef struct AVCodecContext {
* - decoding: Set by user.
*/
int thread_safe_callbacks;
+
+ /**
+ * VBV delay coded in the last frame (in periods of a 27 MHz clock).
+ * Used for compliant TS muxing.
+ * - encoding: Set by libavcodec.
+ * - decoding: unused.
+ */
+ uint64_t vbv_delay;
} AVCodecContext;
/**
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 6167a9b20e..a7f16080f4 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1381,6 +1381,7 @@ vbv_retry:
s->vbv_delay_ptr[1] = vbv_delay>>5;
s->vbv_delay_ptr[2] &= 0x07;
s->vbv_delay_ptr[2] |= vbv_delay<<3;
+ avctx->vbv_delay = vbv_delay*300;
}
s->total_bits += s->frame_bits;
avctx->frame_bits = s->frame_bits;