int nb_reordered_opaque, next_reordered_opaque;
int64_t *reordered_opaque;
+
+ /**
+ * If the encoder does not support ROI then warn the first time we
+ * encounter a frame with ROI side data.
+ */
+ int roi_warned;
} X264Context;
static void X264_log(void *p, int level, const char *fmt, va_list args)
sd = av_frame_get_side_data(frame, AV_FRAME_DATA_REGIONS_OF_INTEREST);
if (sd) {
if (x4->params.rc.i_aq_mode == X264_AQ_NONE) {
- av_log(ctx, AV_LOG_WARNING, "Adaptive quantization must be enabled to use ROI encoding, skipping ROI.\n");
+ if (!x4->roi_warned) {
+ x4->roi_warned = 1;
+ av_log(ctx, AV_LOG_WARNING, "Adaptive quantization must be enabled to use ROI encoding, skipping ROI.\n");
+ }
} else {
if (frame->interlaced_frame == 0) {
int mbx = (frame->width + MB_SIZE - 1) / MB_SIZE;
x4->pic.prop.quant_offsets = qoffsets;
x4->pic.prop.quant_offsets_free = av_free;
} else {
- av_log(ctx, AV_LOG_WARNING, "interlaced_frame not supported for ROI encoding yet, skipping ROI.\n");
+ if (!x4->roi_warned) {
+ x4->roi_warned = 1;
+ av_log(ctx, AV_LOG_WARNING, "interlaced_frame not supported for ROI encoding yet, skipping ROI.\n");
+ }
}
}
}
if (avctx->max_b_frames < 0)
avctx->max_b_frames = 0;
- avctx->bit_rate = x4->params.rc.i_bitrate*1000;
+ avctx->bit_rate = x4->params.rc.i_bitrate*1000LL;
x4->enc = x264_encoder_open(&x4->params);
if (!x4->enc)
if (!cpb_props)
return AVERROR(ENOMEM);
cpb_props->buffer_size = x4->params.rc.i_vbv_buffer_size * 1000;
- cpb_props->max_bitrate = x4->params.rc.i_vbv_max_bitrate * 1000;
- cpb_props->avg_bitrate = x4->params.rc.i_bitrate * 1000;
+ cpb_props->max_bitrate = x4->params.rc.i_vbv_max_bitrate * 1000LL;
+ cpb_props->avg_bitrate = x4->params.rc.i_bitrate * 1000LL;
// Overestimate the reordered opaque buffer size, in case a runtime
// reconfigure would increase the delay (which it shouldn't).
.priv_class = &x264_class,
.defaults = x264_defaults,
.init_static_data = X264_init_static,
+#if X264_BUILD >= 158
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_INIT_THREADSAFE,
+#else
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
+#endif
.wrapper_name = "libx264",
};
#endif
.priv_class = &rgbclass,
.defaults = x264_defaults,
.pix_fmts = pix_fmts_8bit_rgb,
+#if X264_BUILD >= 158
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_INIT_THREADSAFE,
+#else
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
+#endif
.wrapper_name = "libx264",
};
#endif