Commit 31ae2308 authored by Hendrik Leppkes's avatar Hendrik Leppkes

Merge commit '2507b5dd'

* commit '2507b5dd':
  mpegvideo_enc: export vbv_delay in side data
Merged-by: 's avatarHendrik Leppkes <h.leppkes@gmail.com>
parents b799619f 2507b5dd
...@@ -3162,13 +3162,18 @@ typedef struct AVCodecContext { ...@@ -3162,13 +3162,18 @@ typedef struct AVCodecContext {
int error_rate; int error_rate;
#endif #endif
#if FF_API_VBV_DELAY
/** /**
* VBV delay coded in the last frame (in periods of a 27 MHz clock). * VBV delay coded in the last frame (in periods of a 27 MHz clock).
* Used for compliant TS muxing. * Used for compliant TS muxing.
* - encoding: Set by libavcodec. * - encoding: Set by libavcodec.
* - decoding: unused. * - decoding: unused.
* @deprecated this value is now exported as a part of
* AV_PKT_DATA_CPB_PROPERTIES packet side data
*/ */
attribute_deprecated
uint64_t vbv_delay; uint64_t vbv_delay;
#endif
#if FF_API_SIDEDATA_ONLY_PKT #if FF_API_SIDEDATA_ONLY_PKT
/** /**
......
...@@ -1948,6 +1948,9 @@ vbv_retry: ...@@ -1948,6 +1948,9 @@ vbv_retry:
s->out_format == FMT_MPEG1 && s->out_format == FMT_MPEG1 &&
90000LL * (avctx->rc_buffer_size - 1) <= 90000LL * (avctx->rc_buffer_size - 1) <=
s->avctx->rc_max_rate * 0xFFFFLL) { s->avctx->rc_max_rate * 0xFFFFLL) {
AVCPBProperties *props;
size_t props_size;
int vbv_delay, min_delay; int vbv_delay, min_delay;
double inbits = s->avctx->rc_max_rate * double inbits = s->avctx->rc_max_rate *
av_q2d(s->avctx->time_base); av_q2d(s->avctx->time_base);
...@@ -1974,7 +1977,17 @@ vbv_retry: ...@@ -1974,7 +1977,17 @@ vbv_retry:
s->vbv_delay_ptr[1] = vbv_delay >> 5; s->vbv_delay_ptr[1] = vbv_delay >> 5;
s->vbv_delay_ptr[2] &= 0x07; s->vbv_delay_ptr[2] &= 0x07;
s->vbv_delay_ptr[2] |= vbv_delay << 3; s->vbv_delay_ptr[2] |= vbv_delay << 3;
props = av_cpb_properties_alloc(&props_size);
if (!props)
return AVERROR(ENOMEM);
props->vbv_delay = vbv_delay * 300;
#if FF_API_VBV_DELAY
FF_DISABLE_DEPRECATION_WARNINGS
avctx->vbv_delay = vbv_delay * 300; avctx->vbv_delay = vbv_delay * 300;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
} }
s->total_bits += s->frame_bits; s->total_bits += s->frame_bits;
avctx->frame_bits = s->frame_bits; avctx->frame_bits = s->frame_bits;
......
...@@ -197,5 +197,8 @@ ...@@ -197,5 +197,8 @@
#ifndef FF_API_RTP_CALLBACK #ifndef FF_API_RTP_CALLBACK
#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59) #define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59)
#endif #endif
#ifndef FF_API_VBV_DELAY
#define FF_API_VBV_DELAY (LIBAVCODEC_VERSION_MAJOR < 59)
#endif
#endif /* AVCODEC_VERSION_H */ #endif /* AVCODEC_VERSION_H */
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