Browse Source

mpegvideo_enc: export vbv_delay in side data

Deprecate AVCodecContext.vbv_delay
tags/n3.0
Anton Khirnov 10 years ago
parent
commit
2507b5dd67
3 changed files with 21 additions and 0 deletions
  1. +5
    -0
      libavcodec/avcodec.h
  2. +13
    -0
      libavcodec/mpegvideo_enc.c
  3. +3
    -0
      libavcodec/version.h

+ 5
- 0
libavcodec/avcodec.h View File

@@ -2914,13 +2914,18 @@ typedef struct AVCodecContext {
int error_rate;
#endif

#if FF_API_VBV_DELAY
/**
* 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.
* @deprecated this value is now exported as a part of
* AV_PKT_DATA_CPB_PROPERTIES packet side data
*/
attribute_deprecated
uint64_t vbv_delay;
#endif

#if FF_API_SIDEDATA_ONLY_PKT
/**


+ 13
- 0
libavcodec/mpegvideo_enc.c View File

@@ -1769,6 +1769,9 @@ vbv_retry:
s->out_format == FMT_MPEG1 &&
90000LL * (avctx->rc_buffer_size - 1) <=
s->avctx->rc_max_rate * 0xFFFFLL) {
AVCPBProperties *props;
size_t props_size;

int vbv_delay, min_delay;
double inbits = s->avctx->rc_max_rate *
av_q2d(s->avctx->time_base);
@@ -1795,7 +1798,17 @@ vbv_retry:
s->vbv_delay_ptr[1] = vbv_delay >> 5;
s->vbv_delay_ptr[2] &= 0x07;
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;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
}
s->total_bits += s->frame_bits;
avctx->frame_bits = s->frame_bits;


+ 3
- 0
libavcodec/version.h View File

@@ -180,5 +180,8 @@
#ifndef FF_API_RTP_CALLBACK
#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_VBV_DELAY
#define FF_API_VBV_DELAY (LIBAVCODEC_VERSION_MAJOR < 59)
#endif

#endif /* AVCODEC_VERSION_H */

Loading…
Cancel
Save