<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="margin:0;">Hi,</div><div style="margin:0;"><br></div><div style="margin:0;">I use ffmpeg-4.0.1 and x265-3.1.1 to do transcoding. ffmpeg/libx264 supports reconfiguring encoder's bitrate, i.e. change bitrate without reopen x264 encoder.</div><div style="margin:0;"><br></div><div style="margin:0;">ffmpeg/libx265 dosen't support reconfiguring x265's bitrate, but x265 has one api, i.e. x265_encoder_reconfig()/encoder_reconfig, which can reconfigure bitrate. I make one new function of reconfig_encoder() as libx264.c, but fail to update bitrate.</div><div style="margin:0;"><br></div><div style="margin:0;"><div style="margin:0;">static void reconfig_encoder(AVCodecContext *avctx, const AVFrame *frame)</div><div style="margin:0;">{</div><div style="margin:0;">    libx265Context *ctx = avctx->priv_data;</div><div style="margin:0;">    int ret;</div><div style="margin:0;"><br></div><div style="margin:0;">    if (ctx->params->rc.rateControlMode == X265_RC_ABR &&</div><div style="margin:0;">        (ctx->params->rc.bitrate != avctx->bit_rate / 1000 ||</div><div style="margin:0;">         ctx->params->rc.vbvBufferSize != avctx->rc_buffer_size / 1000 ||</div><div style="margin:0;">         ctx->params->rc.vbvMaxBitrate != avctx->rc_max_rate / 1000)) {</div><div style="margin:0;">        av_log(avctx, AV_LOG_INFO, "x265 bitrate:%d->%d vbvBufferSize:%d->%d vbvMaxBitrate:%d->%d\n",</div><div style="margin:0;">               ctx->params->rc.bitrate, (int)(avctx->bit_rate / 1000),</div><div style="margin:0;">               ctx->params->rc.vbvBufferSize, (int)(avctx->rc_buffer_size / 1000),</div><div style="margin:0;">               ctx->params->rc.vbvMaxBitrate, (int)(avctx->rc_max_rate / 1000));</div><div style="margin:0;">        ctx->params->rc.bitrate = avctx->bit_rate / 1000;</div><div style="margin:0;">        ctx->params->rc.vbvBufferSize = avctx->rc_buffer_size / 1000;</div><div style="margin:0;">        ctx->params->rc.vbvMaxBitrate = avctx->rc_max_rate    / 1000;</div><div style="margin:0;">        ret = ctx->api->encoder_reconfig(ctx->encoder, ctx->params);</div><div style="margin:0;">        if (ret != 0) {</div><div style="margin:0;">            av_log(avctx, AV_LOG_ERROR, "x265 encoder_reconfig() failed\n");</div><div style="margin:0;">        }</div><div style="margin:0;">    }</div><div style="margin:0;">}</div></div><div style="margin:0;"><br></div><div style="margin:0;">Is there something wrong with my usage about x265_encoder_reconfig()/encoder_reconfig?</div><div style="margin:0;"><br></div><div style="margin:0;">Thanks!</div><div style="margin:0;"><br></div><div style="margin:0;">Regards</div><div style="margin:0;"><br></div><div style="margin:0;">andrew</div></div><br><br><span title="neteasefooter"><p> </p></span>